Gym 100989E

链接:http://codeforces.com/gym/100989/problem/E

给你两个字符串a和b,判断他们是否“相等”。

“相等”:

1.a与b是同一字符串

2.a与b长度相等,a与b只有一个字符不等且a的长度大于等于8

3.b比a少一个字符,b是a的子串且a的长度大于等于8

这三者满足其一即可

 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4 int main()
 5 {
 6     char a[200],b[200];
 7     cin>>a>>b;
 8     int len1=strlen(a),len2=strlen(b);
 9     if(strcmp(a,b)==0)cout<<"yes"<<endl;
10     else
11     {
12         if(len2>len1)cout<<"no"<<endl;
13         else if(len1-len2>1)cout<<"no"<<endl;
14         else if(len1==len2)
15         {
16             int flag=0;
17             for(int i=0;i<len1;i++)
18             {
19                 if(a[i]!=b[i])
20                 flag++;
21                 if(flag>1)break;
22             }
23             if(flag==1&&len1>=8)cout<<"yes"<<endl;
24             else cout<<"no"<<endl;
25         }
26         else
27         {
28             int flag=0,i;
29             for(i=0;i<len2;i++)
30             {
31                 if(a[i]!=b[i])
32                 {
33                     flag++;
34                     break;
35                 }
36             }
37             for(int j=i;j<=len2;j++)
38             {
39                 if(a[j+1]!=b[j]&&flag)
40                 {
41                     flag++;
42                     break;
43                 }
44             }
45             if(flag>1)cout<<"no"<<endl;
46             else if((flag<=1)&&len1>=8)cout<<"yes"<<endl;
47             else cout<<"no"<<endl;
48         }
49     }
50     return 0;
51 }
原文地址:https://www.cnblogs.com/chen99/p/9270298.html