题目传送门: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]!='\0';i++) 20 { 21 a[s1[i]-'a']++; 22 } 23 for(i=0;s2[i]!='\0';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\n"); 41 continue; 42 } 43 44 k=0; 45 for(i=0;s1[i]!='\0';i++) 46 { 47 if(s1[i]!=s2[i]) 48 k++; 49 } 50 if(k==2) 51 printf("YES\n"); 52 else if(k>2) 53 printf("NO\n"); 54 else if(strcmp(s1,s2)==0) 55 { 56 memset(a,0,sizeof(a)); 57 for(i=0;s1[i]!='\0';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\n"); 66 f=1; 67 break; 68 } 69 } 70 if(f==0) 71 printf("NO\n"); 72 } 73 } 74 return 0; 75 }