#include <iostream> #include <algorithm> #include <cstring> #include <map> using namespace std; int ans; map<string, string> mp; int main() { string tmp; cin >> tmp; // 将所有长度为8的子串存储到map中 for (int i = 0; i < tmp.size() - 7; i ++) { string str = ""; for (int j = i; j < i + 8; j ++) str += tmp[j]; mp[str] = str; } int n; cin >> n; while(n --) { string s; cin >> s; sort(s.begin(), s.end()); // 枚举排列,检查是否在map中出现过 do if(mp.count(s)) ans ++; while(next_permutation(s.begin(), s.end())); } cout << ans << endl; return 0; }给这段代码加注释
时间: 2024-04-01 11:31:29 浏览: 102
#include <iostream> // 标准输入输出流
#include <algorithm> // STL算法库,包含sort()和next_permutation()等函数
#include <cstring> // 字符串操作库,包含字符串拼接等函数
#include <map> // STL容器,用于存储映射关系
using namespace std;
int ans; // 计数器,记录符合条件的字符串数量
map<string, string> mp; // 定义一个map容器,用于存储子串与子串本身的映射关系
int main() {
string tmp;
cin >> tmp; // 读入原始字符串
// 将所有长度为8的子串存储到map中
for (int i = 0; i < tmp.size() - 7; i ++) {
string str = "";
for (int j = i; j < i + 8; j ++) str += tmp[j]; // 拼接8个字符为一个子串
mp[str] = str; // 将子串存储到map中
}
int n;
cin >> n; // 读入待检查的字符串数量
while(n --) {
string s;
cin >> s; // 读入待检查的字符串
sort(s.begin(), s.end()); // 将待检查的字符串排序
// 枚举排列,检查是否在map中出现过
do if(mp.count(s)) ans ++; while(next_permutation(s.begin(), s.end()));
}
cout << ans << endl; // 输出符合条件的字符串数量
return 0;
}
阅读全文