显示原始代码
#include <iostream>
#include <vector>
using namespace std;
const int N = 100010;
bool isSimilar(string T, string S) {
int cnt = 0;
if (T == S)
return true;
int nt = T.length();
int ns = S.length();
if (nt - ns == 2 || ns - nt == 2)
return false;
if (nt == ns) {
for (int i = 0; i < nt; i++) {
if (T[i] != S[i]) {
cnt++;
}
}
if (cnt == 1)
return true;
else
return false;
}
if (nt == ns + 1) {
for (int i = 0; i < nt; i++) {
string temp = T;
T.erase(i, 1);
if (T == S)
return true;
T = temp;
}
return false;
}
if (nt == ns - 1) {
for (int i = 0; i < ns; i++) {
string temp = S;
S.erase(i, 1);
if (T == S)
return true;
S = temp;
}
return false;
}
return true;
}
int main() {
string T, S;
vector<int> ans;
int n;
cin >> n >> T;
for (int i = 1; i <= n; i++) {
cin >> S;
if (isSimilar(S, T) == true) {
ans.push_back(i);
}
}
if (ans.size() == 0) {
cout << 0;
} else {
cout << ans.size() << endl;
for (int i = 0; i < ans.size(); i++) {
cout << ans[i] << " ";
}
}
return 0;
}