把情况分为三种来进行判断,一种是长度小于8的,直接进行比较,如果出现不同字符的就直接错,第二种是长度超过8且第二个字符串的长度比第一个小一,这种情况找到不同的地方然后忽略一格继续依次进行比较,第三种就是长度超过8且长度一样,只要错误次数不超过一就是正确
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
char A[105], B[105];
int n1, n2;
int main()
{
cin>>A>>B;
bool match = true;
n1 = strlen(A);
n2 = strlen(B);
if (n1 < 8)
{
if (n1 != n2)
{
match = false;
}
else
{
for (int i = 0; i < n1; ++i)
{
if (A[i] != B[i])
{
match = false;
break;
}
}
}
}
else
{
if (n1 == n2)
{
int wrong = 0;
for (int i = 0; i < n1; ++i)
{
if (A[i] != B[i])
{
wrong++;
}
}
if (wrong <= 1)
match = true;
else
match = false;
}
else if (n2 == n1 - 1)
{
bool dropped = false;
for (int i = 0, j = 0; i <= n1&&j <= n2; ++i, ++j)
{
if (A[i] != B[j])
{
if (dropped)
{
match = false;
break;
}
else
{
dropped = true;
--j;
}
}
}
}
else
match = false;
}
if (match)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
return 0;
}