別の文字列を2桁回転させて文字列を取得できるかどうかを確認するために、C++でプログラムを作成します。
2つの文字列「a」と「b」を指定したとすると、タスクは、文字列「a」を反時計回りまたは時計回りに正確に2箇所回転させて、文字列「b」を取得できるかどうかを確認することです。たとえば、
入力-1 −
a = google b = legoog
出力 −
True
説明 −文字列「google」は反時計回りに2箇所回転できるため、文字列「legoog」になります。したがって、Trueを返します。
入力-2 −
a = tuorialst b = tutorials
出力 −
False
説明 -文字列「tuorialst」を2箇所回転させて、別の文字列「tutorials」を取得することはできません。したがって、Falseを返します。
この問題を解決するために使用されるアプローチ
与えられた2つの文字列に対して、このアプローチには2つのケースがあります-
-
反時計回りの回転の場合
-
時計回りの回転の場合
まず、両方の文字列の長さが異なる場合は、falseを返します。それ以外の場合、両方の文字列の長さが「2」以下の場合、Trueを返します。
それ以外の場合は、反時計回りに2か所回転させて文字列「b」の部分文字列が文字列「a」と等しいかどうかを確認し、Trueを返します。それ以外の場合はFalse。
同様に、文字列「b」を時計回りに2桁回転させると、文字列「a」と等しくなり、Trueが返されます。それ以外の場合は、falseが返されます。
-
2つの入力文字列「a」と「b」を取ります
-
ブール関数checkRotated(string a、string b)は、2つの文字列「a」と「b」を取り、文字列「b」を反時計回りまたは時計回りに回転させることにより、それらが等しいかどうかを返します。
-
文字列「a」と文字列「b」の長さを確認してください。
-
文字列「b」の部分文字列を、反時計回りに2か所回転させて見つけます。
-
次に、結果の部分文字列が文字列「a」と等しいかどうかを確認し、等しい場合はtrueを返します。
-
文字列「b」のサブストリングを時計回りに2か所回転させて見つけます。
-
次に、結果の部分文字列が文字列「a」と等しいかどうかを確認し、等しい場合はtrueを返します。
-
文字列が等しくない場合は、falseを返します。
例
#include<bits/stdc++.h> using namespace std; bool checkRotated(string str1, string str2){ if (str1.length() != str2.length()) return false; if(str1.length() <= 2 || str2.length() <= 2) return (str1 == str2); string s1= str2.substr(str2.size()-2, str2.size()); string s2= str2.substr(0,str2.size()-2); string s3= s1+s2; if(s3==str1) return true; string s4= str2.substr(2,str2.size()); string s5= str2.substr(0,2); string s6= s4+s5; if(s6==str1) return true; return false; } int main(){ string a= "google"; string b="legoog"; cout<<checkRotated(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桁回転させて、文字列を取得できるかどうかを確認します
2つの文字列sとtがあるとします。左右の任意の方向にtを2回転させて、sを取得できるかどうかを確認する必要があります。 したがって、入力がs =kolkata t =takolkaの場合、「takolka」を左側に2回回転して「kolkata」を取得できるため、出力はTrueになります。 これを解決するには、次の手順に従います- sのサイズがtのサイズと同じでない場合、 Falseを返す right_rot:=空白の文字列 left_rot:=空白の文字列 l:=tのサイズ left_rot:=left_rot concatenate t [from index l-2 t