河工大玲珑校赛重现の 小天使改名

题目传送门:http://218.28.220.249:50015/JudgeOnline/problem.php?id=1268

1268: 小天使改名

时间限制: 2 秒  内存限制: 128 MB
提交: 491  解决: 134
提交 状态 

题目描述

小天使的b站帐号被大家发现啦。于是小天使决定改名,将他原有ID中的两个不同位置的字母进行交换。(小天使有可能将两个不同位置的相同字母进行交换,虽然这样做他的ID并没有发生变化)
Lsf知道小天使原来的ID,他想知道某个ID是否可能是小天使的新ID。

输入

第一行为数据组数T(T≤100)。
每组数据的第一行是字符串s1,(2≤length(s1)≤1000),为小天使的原始ID。
第二行是字符串s2,(length(s2)=length(s1)),为Lsf猜测的ID。
s1,s2均只含小写字母。

输出

对每组数据输出一行,如果这个ID可能是小天使的新ID,输出YES,否则输出NO。

样例输入

3
ch
hc
aa
aa
abc
abb

样例输出

YES
YES
NO


比赛的时候一次A过,,重现一直都不过,,,后来再仔细一看,,,在我的心里,英语就应该是24个字母>_<
 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<algorithm>
 4 using namespace std;
 5 int main()
 6 {
 7     int n,t,i,f,l1,l2,k,ff;
 8     char s1[1100],s2[1100];
 9     int a[26];
10     scanf("%d",&t);
11     while(t--)
12     {
13         memset(a,0,sizeof(a));
14         memset(s1,0,sizeof(s1));
15         memset(s2,0,sizeof(s2));
16         scanf("%s",s1);
17         scanf("%s",s2);
18         f=0;
19         for(i=0;s1[i]!='';i++)
20         {
21             a[s1[i]-'a']++;
22         }
23         for(i=0;s2[i]!='';i++)
24         {
25             if(a[s2[i]-'a']==0)
26             {
27                 f=1;
28                 break;
29             }
30             a[s2[i]-'a']--;
31         }
32         
33         l1=strlen(s1);
34         l2=strlen(s2);
35         if(l1!=l2)
36             f=1;
37             
38         if(f==1)
39         {
40             printf("NO
");
41             continue;
42         }
43         
44         k=0;
45         for(i=0;s1[i]!='';i++)
46         {
47             if(s1[i]!=s2[i])
48                 k++;
49         }
50         if(k==2)
51             printf("YES
");
52         else if(k>2)
53             printf("NO
");
54         else if(strcmp(s1,s2)==0)
55         {
56             memset(a,0,sizeof(a));
57             for(i=0;s1[i]!='';i++)
58             {
59                 a[s1[i]-'a']++;
60             }
61             for(i=0;i<26;i++)
62             {
63                 if(a[i]>1)
64                 {
65                     printf("YES
");
66                     f=1;
67                     break;
68                 }
69             }
70             if(f==0)
71                 printf("NO
");
72         }
73     }
74     return 0;
75 }
原文地址:https://www.cnblogs.com/ljmzzyk/p/6801860.html