C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

別の文字列を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」と出力されます。


  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”},

  2. 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