虽说课本上讲的是将函数当作参数一样使用,但是这题可以不用那么做。
代码:
#include <bits/stdc++.h>
using namespace std;
#define maxn 100 + 5
string a, b;
int cnt[maxn], cnt2[maxn];
void ssor(int *s)
{
int t, i, j;
int len = 26;
for(int i = 0; i < len; i++)
{
for(int j = i + 1; j < len; j++)
if(s[i] > s[j])
{
t = s[i];
s[i] = s[j];
s[j] = t;
}
}
}
int main()
{
while(cin>>a>>b)
{
int len1 = a.length(), len2 = b.length();
memset(cnt,0,sizeof(cnt));
memset(cnt2,0,sizeof(cnt2));
if(len1 != len2)
cout<<"NO"<<endl;
else
{
for(int i = 0; i < len1; i++)
{
cnt[a[i] - 'A']++;
cnt2[b[i] - 'A']++;
}
ssor(cnt);
ssor(cnt2);
int flag = 1;
for(int i = 0; i < 26; i++)
if(cnt[i] != cnt2[i])
flag = 0;
if(flag)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
}
return 0;
}
本文介绍了一种通过统计并排序字符频率来判断两个字符串是否为字母异位词的方法。使用C++实现,通过对输入的两个字符串进行字符计数和排序,最后对比两者的字符频率序列来确定它们是否由相同的字符组成。
6957

被折叠的 条评论
为什么被折叠?



