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

文字列が互いに回転しているかどうかをチェックするプログラム?


ここでは、2つの文字列が互いに回転しているかどうかを判断できる1つのプログラムを示します。文字列の回転は-

のようなものです

2つのストリングがS1=‘HELLO’、およびS2 =‘LOHEL’であるとすると、それらは互いに回転します。 HELLOを左に3回転させると、LOHELになります。

この問題を解決するために、最初の文字列をそれ自体と連結してから、2番目の文字列が連結された文字列に存在するかどうかを確認します。したがって、HELLOの場合は、HEL LOHELになります。 LO。次に、この連結された文字列にはLOHELが含まれます。 [HELLOHELLO]。

アルゴリズム

isRotation(str1、str2)

begin
   if lengths of str1, and str2 are not same then return false;
   temp := concatenate str1 with str1 itself
   if temp contains str2, then
      return true
   otherwise return false
end

#include<iostream>
using namespace std;
bool isRotation(string str1, string str2){
   if(str1.length() != str2.length())
      return false;
   string con_str = str1 + str1;
   if(con_str.find(str2) != string::npos){
      return true;
   } else {
      return false;
   }
}
main() {
   string str1, str2;
   cout << "Enter two strings: ";
   cin >> str1 >> str2;
   if(isRotation(str1, str2)){
      cout << "Two strings are rotation of each other";
   } else {
      cout << "Two strings are not rotation of each other";
   }
}

出力

Enter two strings: STACK CKSTA
Two strings are rotation of each other

  1. ポイントをチェックするプログラムがPythonで凹多角形を形成しているかどうか

    多角形の外側の点が時計回りにあるとします。これらの点が凸多角形を形成しているかどうかを確認する必要があります。ポリゴンの内角のいずれかが180°より大きい場合、ポリゴンは凹面であると言われます。 この図から、3つの連続するポイントごとに、CDEを除いて内角が180°以下であることが明らかです。 したがって、入力がpoints =[(3,4)、(4,7)、(7,8)、(8,4)、(12,3)、(10,1)、(5,2 )]の場合、出力はTrueになります。 これを解決するには、次の手順に従います- n:=ポイントのサイズ 0からポイントのサイズまでの範囲のiについては、 1の場

  2. ポイントをチェックするプログラムがPythonで凸包を形成しているかどうか

    ポリゴンの外側の点が時計回りにあるとします。これらの点が凸包を形成しているかどうかを確認する必要があります。 この図から、3つの連続するポイントごとに内角が180°以下であることが明らかです。したがって、すべての角度が180°以下の場合、ポリゴンは凸包になります。 したがって、入力がpoints =[(3,4)、(4,7)、(7,8)、(11,6)、(12,3)、(10,1)、(5,2 )]の場合、出力はTrueになります。 これを解決するには、次の手順に従います- n:=ポイントのサイズ 0からポイントのサイズまでの範囲のiについては、 1の場合はpoints[i-2]、