C ++のメタ文字列(1つの文字列を入れ替えた後に2つの文字列が同じになる可能性があるかどうかを確認する)
このセクションでは、2つの文字列がメタ文字列であるかどうかを確認する方法を説明します。メタ文字列は、非常によく似た文字列です。 1つの文字列で2つの要素を交換すると、他の文字列と一致します。 2つの文字列が「HELLO」と「OELLH」であるとすると、それらはメタ文字列です。
2つの文字列がメタ文字列であるかどうかを確認するには、次の手順に従う必要があります。
手順 −
-
両方の文字列の長さが異なる場合は、falseを返します
-
それ以外の場合は、一致していない文字の数を検索し、一致していない文字のインデックスも保存します
-
カウントが2より大きい場合は、falseを返します
-
それ以外の場合は、これらの文字を交換します。2つの文字列が同じ場合は、trueを返し、それ以外の場合はfalseを返します。
例
#include <iostream> using namespace std; bool areTheyMetaString(string s1, string s2) { int s1_len = s1.length(); int s2_len = s2.length(); if (s1_len != s2_len) return false; int prev = -1, curr = -1; int count = 0; for (int i=0; i<s1_len; i++) { if (s1[i] != s2[i]) { count++; // number of unmatched characters if (count > 2) return false; prev = curr; curr = i; } } return (count == 2 && s1[prev] == s2[curr] && s1[curr] == s2[prev]); } int main() { string s1 = "HELLO", s2 = "OELLH"; if(areTheyMetaString(s1, s2)){ cout << "Meta Strings"; } else { cout << "Not Meta Strings"; } }
出力
Meta Strings
-
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およびrがあるとすると、r =s|であるかどうかを確認する必要があります。 tまたはr=t + sここで、|連結を示します。 したがって、入力がs =world t =hello r =helloworldの場合、出力は helloworld(r)=hello(t)|としてTrueになります。 「世界」(s)。 これを解決するには、次の手順に従います- rのサイズがsとtの長さの合計と同じでない場合、 Falseを返す rがsで始まる場合、 rがtで終わる場合、 Trueを返す rがtで始まる場合、 rがsで終わる場合、 Trueを返す F