判斷兩個字串是否互為旋轉詞

2021-08-16 17:42:25 字數 1275 閱讀 6702

(from 牛客)

旋轉詞的定義為兩個字串組成字元相同,只是字元排序不同。比如字串abcd旋轉詞為bcda,cdab,dabc三個。以下為兩個實現方法。兩種實現方法的思考的關鍵點都是如何獲取旋轉詞。首先找旋轉詞的特點,是原字串的首個字元放在最後不斷形成的,所以如果將兩個原字串拼在一起,就可以發現所有旋轉詞被包含在其中。比如abcdabcd包含旋轉詞bcda,cdab,dabc。

1.直接呼叫string的contains方法。contains方法實現的原理是brute force演算法,即蠻力演算法,時間複雜度為o(m*n)。至於為什麼用這個演算法,請看詳細解釋:

具體實現步驟:

1.判斷兩個字串str1,str2字元個數是否相同,相同進行下一步;

2.將兩個str1拼接在一起

3.呼叫contains方法,判斷str2是否在拼接後的字串中。

**實現:

public

class rotation

//測試

public

static

void

main(string args)

}

2.通過kmp演算法實現。演算法時間複雜度是o(m+n)。對kmp演算法的理解之後再補充。

具體實現步驟:

1.判斷兩個字串str1,str2字元個數是否相同,相同進行下一步;

2.將兩個str1拼接在一起

3.呼叫kmp方法,判斷str2是否在拼接後的字串中。

**實現:

public

class rotation

//kmp演算法實現

public boolean cal_kmp(string text,string pattern)

}else

if(j == 0)

i++;

else

// j為最長公共子串的下一位的座標,j>=0

j = next[j-1]+1;

}return

false;

}public

int cal_next(string pattern)

return next;

}//測試

public

static

void

main(string args)

}

判斷兩個字串是否互為旋轉詞

題目 如果乙個字串str,把字串str前面任意的部分挪到後面形成的字串叫作str的旋轉詞。比如str 12345 str的旋轉詞 有 12345 23451 34512 45123 和 51234 給定兩個字串a和b,請判斷a和b是否互為旋轉詞。若a和b長度不相等,則a和b必然不互為旋轉詞,直接返回...

判斷兩個字串是否互為旋轉詞 Python版

題目 def is rotation str1,str2 if str1 or str2 or len str1 len str2 return false str double str1 str1 if str2 in str double return true else return fals...

字串問題 判斷兩個字串是否互為旋轉詞

如果乙個字串str,把字串str前面的任意部分挪到後面形成的字串叫做str的旋轉詞。給定兩個字串,判斷是否互為旋轉詞。比如 a abcd b cdab true a abcd b bcad false 解題思路 如果長度不一樣,肯定是false,如果長度一樣,時間複雜度是o n 方法一 直接利用st...