小天使改名
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 335 Accepted Submission(s): 118
Problem Description
小天使的b站帐号被大家发现啦。于是小天使决定改名,将他原有ID中的两个不同位置的字母进行交换。(小天使有可能将两个不同位置的相同字母进行交换,虽然这样做他的ID并没有发生变化)
Lsf知道小天使原来的ID,他想知道某个ID是否可能是小天使的新ID。
Lsf知道小天使原来的ID,他想知道某个ID是否可能是小天使的新ID。
Input
第一行为数据组数T(T≤100)。
每组数据的第一行是字符串 s1,(2≤length(s1)≤1000),为小天使的原始ID。
第二行是字符串 s2,(length(s2)=length(s1)),为Lsf猜测的ID。
s1,s2均只含小写字母。
每组数据的第一行是字符串 s1,(2≤length(s1)≤1000),为小天使的原始ID。
第二行是字符串 s2,(length(s2)=length(s1)),为Lsf猜测的ID。
s1,s2均只含小写字母。
Output
对每组数据输出一行,如果这个ID可能是小天使的新ID,输出YES,否则输出NO。
Sample Input
3 ch hc aa aa abc abb
Sample Output
YES YES NO
#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
int main(){
int t;
scanf("%d",&t);
while(t--){
char s1[1000+5];
char s2[1000+5];
int a[27]={0};
int b[27]={0};
cin>>s1>>s2;
int num =0;
int dif[10004];
for(int i=0;i<strlen(s1);i++){
a[s1[i]-'a']++;
b[s2[i]-'a']++;
if(s1[i]!=s2[i])num++;
}
bool flagg= false;
bool flag = true;
for(int i=0;i<26;i++){
if(a[i]>=2)flagg=1;
if(a[i]!=b[i]){
flag=0;
break;
}
}
if((flag&&num==2)||(flag&&flagg&num==0))printf("YES\n");
else printf("NO\n");
}
}