题意太关键了,是两个字符串,让你对其中一个字符串操作。操作内容是,可以将这个字符串任意排列,然后将这个字符串中所有相同的字符随意映射成其他一种字符,使得映射后的字符串与另一个字符串相同。

所以只需要将所有相同字符的数量记录下来,与另一个字符串比较有没有这个数量的字符就行了。

(用数组存放每个字符的数量)

给定两个长度分别为n的字符串,判断他们能否一一对应

代码如下:


[c

pp] 
   view plain
    copy
   
   
 
1. #include<iostream>//UVA1339  
2. #include<cstdio>  
3. #include<cstring>  
4. #include<algorithm>  
5. using namespace std;  
6. int main()  
7. {  
8. char str1[105],str2[105];  
9. while(~scanf("%s%s",str1,str2))  
10.     {  
11. int len=strlen(str1);  
12. int cnt1[26]={0},cnt2[26]={0};  
13. for(int i=0;i<len;i++)  
14.         {  
15. 'A']++;  
16. 'A']++;  
17.         }  
18.         sort(cnt1,cnt1+26);  
19.         sort(cnt2,cnt2+26);  
20. int flag=0;  
21. for(int i=1;i<26;i++)  
22. if(cnt1[i]!=cnt2[i])  
23.         {  
24. //如果有不相等的  
25. break;  
26.         }  
27. if(flag)  
28. "NO\n");  
29. else  
30. "YES\n");  
31.     }  
32. return 0;  
33. }  
34.