核心代码:
bool check(string a, string b) {
if (a == b)return 1;
if (max((int)a.size(), (int)b.size()) > min((int)a.size(), (int)b.size()) + 1)return 0; //长度差距大于一,必然不行。
int x = 0;
//修改是否可以
for (int i = 0; i < a.size(); i++) {
if (a[i] != b[i])x++;
}
if (x == 1)return 1;
if (a.size() == b.size())return 0;//修改不行,长度相同,必然不相似。
/*
插入是否可以
若a插入一个字符=b,则b删除一个字符=a
*/
string n;
if (a.size() < b.size()) {
n = a;
a = b;
b = a;
}
//此时a是较长串。
int a_index = 0, b_index = 0;
bool change = 0;
for (; a_index < a.size() && b_index < b.size(); a_index++, b_index++) {
if (a[a_index] != b[b_index]) {
if (change)return 0;
b_index++;
change = 1;
}
}
return (change == 1) ? 1 : 0;
}
代码逻辑是如果是相似返回1,不相似返回2。
码风不好请见谅