题意太关键了,是两个字符串,让你对其中一个字符串操作。操作内容是,可以将这个字符串任意排列,然后将这个字符串中所有相同的字符随意映射成其他一种字符,使得映射后的字符串与另一个字符串相同。
所以只需要将所有相同字符的数量记录下来,与另一个字符串比较有没有这个数量的字符就行了。
(用数组存放每个字符的数量)
给定两个长度分别为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.