C ++を使用して、2つの文字列が互いにアナグラムであるかどうかを確認します
2つの文字列「a」と「b」を指定したとします。与えられた2つの文字列が互いにアナグラムであるかどうかを確認する必要があります。 1つの文字列に別の文字列と同じ文字が含まれている場合、2つの文字列は互いにアナグラムであると言われます。
例
入力-1 −
a= anagram b= gnarama
出力 −
True
説明 −文字列「gnarama」は文字列「anagram」と同じ文字です。したがって、Trueを返します。
入力-2 −
a= programmer b= mprogretmrqp
出力 −
False
説明 −文字列「b」は文字列「a」よりも文字数が多いため、文字列の長さが異なると言えます。したがって、Falseを返します。
この質問を解決するために以下のプログラムで使用されるアプローチは次のとおりです
与えられた2つの文字列に対して、文字列の長さが異なる場合、Falseを返します。それ以外の場合、文字列の長さが同じである場合は、その文字列の各文字が別の文字列の文字と一致するかどうかを確認し、一致する場合はTrueを返します。一致しない場合はFalseを返します。
-
2つの文字列「a」と「b」を入力します
-
ブール関数checkAnagram(string a、string b)は、2つの文字列「a」と文字列「b」を受け取り、それらが互いにアナグラムであるかどうかを返します。
-
文字列「a」と「b」の長さを見つけて、それらが等しいかどうかを確認します。それらが等しくない場合は、falseを返します。
-
C ++ STL(標準テンプレートライブラリ)マップ関数を使用して、文字列「a」を繰り返し処理することにより、文字列「a」の各文字のハッシュテーブルを作成します。
-
文字列「a」の各文字のマップを作成するときに、文字列「b」に存在する文字を削除します。
-
次に、マップを繰り返し処理して、ハッシュテーブルに文字が残っているかどうかを確認し、Falseを返します。そうでない場合は、Trueを返します。
例
#include<bits/stdc++.h> using namespace std; bool checkAnagram(string a, string b){ int len1= a.length(); int len2= b.length(); if(len1!= len2) { return false; } unordered_map <char,int> mp; for(int i=0;i<a.size();i++) { mp[a[i]]++; mp[b[i]]--; } for(auto it:mp){ if(it.second) return false; } return true; } int main(){ string a= "anagram"; string b= "gnarama"; cout<< checkAnagram(a,b)<<endl; return 0; }
出力
上記のコードを実行すると、出力は次のように出力されます。
1
両方の入力文字列は互いにアナグラムであるため、True、つまり「1」を返します
-
C++で2つのバイナリ文字列を追加するプログラム
2進数の文字列が2つある場合、それら2つの2進数文字列を加算して得られた結果を見つけ、その結果を2進数文字列として返す必要があります。 2進数は、0または1のいずれかで表される数値です。2つの2進数を加算する際には、2進数の加算規則があります。 0+0 → 0 0+1 → 1 1+0 → 1 1+1 → 0, carry 1 入力 str1 = {“11”}, str2 = {“1”} 出力 “100” 入力 str1 = {“110”},
-
Pythonで文字列が相互に回転しているかどうかを確認します
2つの文字列sとtがあるとすると、tがsの回転であるかどうかを確認する必要があります。 したがって、入力がs =hello、t =lloheの場合、出力はTrueになります。 これを解決するには、次の手順に従います- sのサイズがtのサイズと同じでない場合、 Falseを返す temp:=sは再びsと連結します 0の場合、 Trueを返す Falseを返す 理解を深めるために、次の実装を見てみましょう- サンプルコード def solve(s, t): if len(s) != len(t): retur