C++ 判断两个单词是否为字母异位词 - 代码实现及详解

两个词如果包含相同的字母,但次序不同,则称为字母异位词。例如:'silent' 和 'listen' 是字母异位词。

本篇文章将介绍如何使用 C++ 编写一个函数来判断两个单词是否为字母异位词。我们将提供详细的代码实现步骤,并解释算法的思路。

算法思路

  1. 首先判断两个字符串的长度是否相等,如果不相等则一定不是字母异位词。

  2. 将两个字符串中的字符按照字典序排序,然后逐个比较每个字符是否相同,如果都相同则是字母异位词,否则不是。

代码实现

#include <iostream>
#include <string>
#include <algorithm> // sort函数需要用到的头文件

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());
    // 逐个比较每个字符是否相同
    for (int i = 0; i < s1.length(); i++) {
        if (sorted_s1[i] != sorted_s2[i]) {
            return false;
        }
    }
    return true;
}

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;
}

代码解释

  1. #include <iostream>: 引入标准输入输出流库,用于从控制台输入和输出数据。
  2. #include <string>: 引入字符串库,用于处理字符串。
  3. #include <algorithm>: 引入算法库,包含排序函数 sort
  4. using namespace std;: 使用标准命名空间,简化代码书写。
  5. bool isAnagram(const string& s1, const string& s2): 定义一个名为 isAnagram 的布尔类型函数,用于判断两个字符串 s1s2 是否为字母异位词。
  6. if (s1.length() != s2.length()) { return false; }: 首先判断两个字符串的长度是否相等,如果不相等则一定不是字母异位词,直接返回 false
  7. string sorted_s1 = s1; string sorted_s2 = s2;: 分别创建两个字符串 sorted_s1sorted_s2,用于存储排序后的字符串 s1s2
  8. sort(sorted_s1.begin(), sorted_s1.end()); sort(sorted_s2.begin(), sorted_s2.end());: 使用 sort 函数对 sorted_s1sorted_s2 进行字典序排序。
  9. for (int i = 0; i < s1.length(); i++) { if (sorted_s1[i] != sorted_s2[i]) { return false; } }: 遍历排序后的字符串,逐个比较每个字符是否相同,如果发现不同则直接返回 false
  10. return true;: 如果所有字符都相同,则返回 true,表示两个字符串为字母异位词。
  11. int main() { ... }: 程序的入口函数。
  12. getline(cin, s1); getline(cin, s2);: 从控制台输入两个字符串,分别存储到 s1s2 中。
  13. if (isAnagram(s1, s2)) { cout << 'anagrams' << endl; } else { cout << 'not anagrams' << endl; }: 调用 isAnagram 函数判断两个字符串是否为字母异位词,并根据结果输出 'anagrams' 或 'not anagrams'。

总结

这篇文章介绍了如何使用 C++ 编写一个函数来判断两个单词是否为字母异位词。代码实现简单易懂,算法思路清晰,可以帮助读者更好地理解字母异位词的判定方法。

C++ 判断两个单词是否为字母异位词 - 代码实现及详解

原文地址: https://www.cveoy.top/t/topic/m5MB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录