1. 程式人生 > >面試8之給定兩個字串s1和s2,請編寫程式碼檢查s2是否為s1旋轉而成

面試8之給定兩個字串s1和s2,請編寫程式碼檢查s2是否為s1旋轉而成


假定我們都知道非常高效的演算法來檢查一個單詞是否為其他字串的子串。請將這個演算法編寫成一個函式,給定兩個字串s1和s2,請編寫程式碼檢查s2是否為s1旋轉而成,要求只能呼叫一次檢查子串的函式。
給定兩個字串s1,s2,請返回bool值代表s2是否由s1旋轉而成。字串中字元為英文字母和空格,區分大小寫,字串長度小於等於1000。
測試樣例:
"Hello world","worldhello "
返回:false
#include<iostream>
using namespace std;
#include<string>

bool CheckReverseEqual(string s1,string s2)
{

	if (s1.length() != s2.length())
		return false;

	s1 += s1;
	if (s1.find(s2) != -1)
		return true;
	return false;
}


int main()
{
	string s1 = "Hello world";
	string s2 = "worldhello";

	string s3 = "waterbottle";
	string s4 = "erbottlewat";

	cout <<CheckReverseEqual( s1,s2) <<endl;
	cout <<CheckReverseEqual( s3,s4) <<endl;
	cout << "hello..." <<endl;
	return 0;
}



"waterbottle","erbottlewat"

返回:true