📌  相关文章
📜  在 C++ 中使用 unordered_map 检查两个字符串是否是彼此的字谜

📅  最后修改于: 2022-05-13 01:57:07.805000             🧑  作者: Mango

在 C++ 中使用 unordered_map 检查两个字符串是否是彼此的字谜

编写一个函数来检查两个给定的字符串是否是彼此的Anagram

一个字符串的变位词是另一个包含相同字符的字符串,只是字符的顺序可以不同。

检查两个字符串是否是彼此的字谜

方法:无序映射也可用于查找任何两个给定字符串是否为字谜。想法是将第一个字符串的每个字符存储在映射中,以其频率为值,然后检查映射中第二个字符串的每个字符,如果在映射中找到该字符,则降低其频率值从地图上。如果一个字符的频率变为0,则将其从映射中删除,最后如果映射为空,则表示第一个字符串的所有字符都存在于第二个字符串中,并且出现次数相同(每个字符的频率) .

执行:

// C++ program to check whether
// two strings are anagrams of
// each other or not, using Hashmap
  
#include 
#include 
using namespace std;
  
// Function to check whether two strings
// are an anagram of each other
bool isanagram(string s1, string s2)
{
    int l1 = s1.length();
    int l2 = s2.length();
  
    unordered_map m;
    if (l1 != l2) {
        return false;
    }
    for (int i = 0; i < l1; i++) {
        m[s1[i]]++;
    }
  
    for (int i = 0; i < l2; i++) {
        if (m.find(s2[i]) == m.end()) {
            return false;
        }
        else {
            m[s2[i]]--;
            if (m[s2[i]] == 0) {
                m.erase(s2[i]);
            }
        }
    }
    return m.size() == 0;
}
  
// Test function
void test(string str1, string str2)
{
  
    cout << "Strings to be checked:\n"
         << str1 << "\n"
         << str2 << "\n";
  
    if (isanagram(str1, str2)) {
        cout << "The two strings are"
             << "anagram of each other\n";
    }
    else {
        cout << "The two strings are not"
             << " anagram of each other\n";
    }
    cout << endl;
}
  
// Driver program
int main()
{
    // Get the Strings
    string str1 = "geeksforgeeks";
    string str2 = "forgeeksgeeks";
  
    // Test the Strings
    test(str1, str2);
  
    // Get the Strings
    str1 = "geeksforgeeks";
    str2 = "geeks";
  
    // Test the Strings
    test(str1, str2);
    return 0;
}
输出:
Strings to be checked:
geeksforgeeks
forgeeksgeeks
The two strings areanagram of each other

Strings to be checked:
geeksforgeeks
geeks
The two strings are not anagram of each other

相关文章:

  • 检查两个字符串是否是彼此的字谜
  • 在Java中使用HashMap检查两个字符串是否是彼此的Anagram