一、題目描述
假定我們都知道非常高效的演算法來檢查乙個單詞是否為其他字串的子串。請將這個演算法編寫成乙個函式,給定兩個字串s1和s2,請編寫**檢查s2是否為s1旋轉而成,要求只能呼叫一次檢查子串的函式。
給定兩個字串s1,s2,請返回bool值代表s2是否由s1旋轉而成。字串中字元為英文本母和空格,區分大小寫,字串長度小於等於1000。
測試樣例:
"hello world","worldhello "
返回:false
"waterbottle","erbottlewat"
返回:true
二、結題思路
個人思路是將字串s1前i個元素移動到s1的尾部,然後判斷新字串和s2是否相等,如果相等,則返回true;如果一直找不到則返回false。
牛客論壇裡面有一種更好的做法,如果s2是s1的反轉字串,那麼s2必然是兩個s1拼接成的新字串的字串,想法真的很棒。
三、**
public class reverseequal {
public boolean checkreverseequal(string s1, string s2) {
// write code here
if(s1==null || s2==null || s1.length()!=s2.length())
return false;
string s=s1+s1;
if(s.indexof(s2)<0)
return false;
return true;
/*if(s1==null || s2==null || s1.length()!=s2.length())
return false;
for(int i=1;i
《程式設計師面試金典》 反轉字串
題目描述 請實現乙個演算法,在不使用額外資料結構和儲存空間的情況下,翻轉乙個給定的字串 可以使用單個過程變數 給定乙個string inistring,請返回乙個string,為翻轉後的字串。保證字串的長度小於等於5000。測試樣例 this is nowcoder 返回 redocwon si s...
程式設計師金典 字串互異
題目描述 請實現乙個演算法,確定乙個字串的所有字元是否全都不同。這裡我們要求不允許使用額外的儲存結構。給定乙個string inistring,請返回乙個bool值,true代表所有字元全都不同,false代表存在相同的字元。保證字串中的字元為ascii字元。字串的長度小於等於3000。測試樣例 a...
程式設計師面試金典
1.有個小孩正在上樓梯,樓梯有n階台階,小孩一次可以上1階 2階 3階。請實現乙個方法,計算小孩有多少種上樓的方式。為了防止溢位,請將結果mod 1000000007 給定乙個正整數intn,請返回乙個數,代表上樓的方式數。保證n小於等於100000。int countways int n retu...