转载: https://blog.youkuaiyun.com/huatian5/article/details/51477297
题意太关键了,是两个字符串,让你对其中一个字符串操作。操作内容是,可以将这个字符串任意排列,然后将这个字符串中所有相同的字符随意映射成其他一种字符,使得映射后的字符串与另一个字符串相同。
所以只需要将所有相同字符的数量记录下来,与另一个字符串比较有没有这个数量的字符就行了。
(用数组存放每个字符的数量)
给定两个长度分别为n的字符串,判断他们能否一一对应
代码如下:
- #include<iostream>//UVA1339
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- int main()
- {
- char str1[105],str2[105];
- while(~scanf("%s%s",str1,str2))
- {
- int len=strlen(str1);
- int cnt1[26]={0},cnt2[26]={0};
- for(int i=0;i<len;i++)
- {
- cnt1[str1[i]-'A']++;
- cnt2[str2[i]-'A']++;
- }
- sort(cnt1,cnt1+26);
- sort(cnt2,cnt2+26);
- int flag=0;
- for(int i=1;i<26;i++)
- if(cnt1[i]!=cnt2[i])
- {
- flag=1;//如果有不相等的
- break;
- }
- if(flag)
- printf("NO\n");
- else
- printf("YES\n");
- }
- return 0;
- }