编写一个函数,判断两个单词是否有字母异位。 两个词如果包含相同的字母,但次序不同,则称为字母异位词。例如:“silent”和“listen”是字母异位词。 C++课程要求:编写如下函数: bool isAnagram(const string& s1, const string& s2) 输入只有两行字符串,分别代表s1和s2 是异位词则输出:anagrams 不是异位词则输出:not anagrams
时间: 2024-02-21 16:00:41 浏览: 81
AlgorithmAndLeetCode#itcharge-LeetCode-Py#0242. 有效的字母异位词1
下面是一个实现了 isAnagram 函数的示例代码:
```
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
bool isAnagram(const string& s1, const string& s2) {
if (s1.length() != s2.length()) { // 如果两个字符串长度不同,一定不是异位词
return false;
}
string sorted_s1 = s1;
string sorted_s2 = s2;
sort(sorted_s1.begin(), sorted_s1.end()); // 对两个字符串排序
sort(sorted_s2.begin(), sorted_s2.end());
return sorted_s1 == sorted_s2; // 判断排序后的字符串是否相等
}
int main() {
string s1, s2;
getline(cin, s1); // 输入第一个字符串
getline(cin, s2); // 输入第二个字符串
if (isAnagram(s1, s2)) { // 判断是否为异位词
cout << "anagrams" << endl;
} else {
cout << "not anagrams" << endl;
}
return 0;
}
```
这个 isAnagram 函数接受两个 const string& 类型的参数 s1 和 s2,用于判断两个字符串是否为异位词。函数首先比较两个字符串的长度,如果长度不同,则一定不是异位词,直接返回 false。如果长度相同,就将两个字符串分别排序,然后比较排序后的字符串是否相等。如果相等,则表示两个字符串是异位词,返回 true;否则不是异位词,返回 false。
在主函数中,通过 getline 函数获取两行输入的字符串,然后调用 isAnagram 函数判断它们是否为异位词,根据结果输出相应的信息。
阅读全文