写一个函数判断两个字符串是否是变位词,变位词(anagrams)指的是组成两个单词的字符相同,但位置不同的单词。比如说, abbcd和abcdb就是一对变位词。
#include<iostream>
#include<algorithm>
using namespace std;
bool isChangeWord(char a[100],char b[100])
{
if(strlen(a)!=strlen(b))
return false;
sort(a,a+strlen(a));
sort(b,b+strlen(b));
for(int i=0;i<strlen(b);i++)
if(a[i]!=b[i])
return false;
return true;
}
//判断两个字符串的字母出现次数是否一样,思想值得学习
bool isChangeWord2(char a[100],char b[100])
{
if(strlen(a)!=strlen(b))return false;
if(strlen(a)==0||strlen(b)==0)return false;
int flag[256]={0};
for(int i=0;i<strlen(a);i++)
{
flag[a[i]]++;
flag[b[i]]--;
}
for(int i=0;i<256;i++)
if(flag[i]!=0)
return false;
return true;
}
int main()
{
char a[]="abde";
char b[]="abdf";
printf("%s\n",isChangeWord2(a,b)?"true":"false");
return 0;
}