文字列[] S2は、文字列s1の回転か否かを判断します

题目
使用すると、1つの単語が別の部分文字列であるかどうかを確認する方法のisSubstringを持っていると仮定します。2つの文字列s1とs2を考えると、s2はisSubstringへのコールは1つだけ(すなわち、「ウォーターボトル」は「erbottlewat」の回転である)を使用して、S1の回転であるかどうかを確認するためにコードを記述します。

あなたはisSubstring機能があると、それは文字列が別の文字列の部分文字列であるかどうかを検出することができます。S1とS2与えられた文字列は、回転が文字列s1のs2のコードを書いてくださいかどうかを判断するisSubstring一度だけ使用することができます。 
例:「ウォーターボトルは、」「erbottlewat」の文字列回転です。
 

アイデア:

一点のみゲット:S1 + s1はすべての文字列s1の回転が含まれているが、それはサブS2、S1、S1 +かどうかを判断するに相当します

//判断s2是不是s1的子串
bool isSubstring(string s1, string s2){
    if(s1.find(s2) != string::npos) return true;
    else return false;
}

//防范一下,以及调用:isSubstring(s1+s1, s2)
bool isRotation(string s1, string s2){
    if(s1.length() != s2.length() || s1.length()<=0)
        return false;
    return isSubstring(s1+s1, s2);
}

 

例えば:

S1 =ウォーターボトル、回転文字列がerbottlewatあります

S1 + S1 = waterbottlewaterbottle

おすすめ

転載: blog.csdn.net/m0_38033475/article/details/92380657