字符易位破译"/>
字符易位破译
编写一个函数,检查两个单词是否是字母易位词。两个单词如果包含相同的字母,次序不同,则称为字母易位词。例如:“silent”和“listen”是字母易位词。
提示:先对单词进行排序,再进行比较
如果用数组来保存输入的单词的话我不知道怎样判断单词的字母数(C++刚学)。最难下手的是字母排序问题。
不需要排序的方法:
bool func(const char *word1, const char *word2)
{
char alpha1[26] = {0};
char alpha2[26] = {0};
int i = 0;
while (*word1)
{
alpha1[(*word1 | 0x20) - 'a']++;
word1++;
}
while (*word2)
{
alpha2[(*word2 | 0x20) - 'a']++;
word2++;
}
for (; i < 26; i++)
{
if (alpha1[i] != alpha2[i])
return false;
}
return true;
}
#include <algorithm> #include <iostream>
#include <string>
using namespace std;
bool is_anagram (std::string x, std::string y)
{
std::sort(x.begin(), x.end());
std::sort(y.begin(), y.end());
return x == y;
}
int main (int, char**)
{
cout << is_anagram("silent", "listen") << endl; // 1
cout << is_anagram("silent", "lesson") << endl; // 0
return 0;
}
更多推荐
字符易位破译
发布评论