使用 C++ 检查两个字符串是否互为变位词
假设我们给出了两个字符串“a”和“b”。我们必须检查给定的两个字符串是否相互变位。如果一个字符串包含与另一个字符串相同的字符,则称两个字符串互为变位词。
例如
输入1-
a= anagram b= gnarama
输出-
True
说明-字符串'gnarama'与字符串'anagram'具有相同的字符。因此我们返回True。
输入2-
a= programmer b= mprogretmrqp
输出-
False
说明-字符串'b'的字符数比字符串'a'多,因此我们可以说字符串的长度不同。因此我们返回False。
以下程序中用于解决此问题的方法如下
对于给定的两个字符串,我们有字符串的长度,如果字符串的长度不同,我们将返回False。否则,如果字符串的长度相同,那么我们将检查该字符串的每个字符是否与另一个字符串的字符匹配,并返回True否则返回False。
输入两个字符串'a'和'b'
布尔函数checkAnagram(stringa,stringb)接受两个字符串'a'和字符串'b'并返回它们是否是彼此的字谜。
找出字符串'a'和'b'的长度并检查它们是否相等。如果它们不相等,则返回false。
使用C++STL(StandardTemplateLibrary)map函数,通过迭代字符串'a'来创建字符串'a'的每个字符的哈希表。
在创建字符串'a'的每个字符的映射时,删除字符串'b'中存在的那些字符。
然后遍历映射并检查哈希表中是否还有任何字符,并返回False否则返回True。
示例
#includeusing namespace std; bool checkAnagram(string a, string b){ int len1= a.length(); int len2= b.length(); if(len1!= len2) { return false; } unordered_map mp; for(int i=0;i 输出结果 如果我们运行上面的代码,那么它会打印输出,
1由于两个输入字符串都是彼此的字谜,因此它返回Truei.e'1'