欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Gym 100989E题解

程序员文章站 2022-05-04 13:19:19
链接: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 这三者 ......

链接: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 }