Leetcode KMP演算法之翻轉子串

2021-10-09 14:55:33 字數 571 閱讀 9593

給定兩個字串s1,s2,請返回bool值代表s2是否由s1旋轉而成。字串中字元為英文本母和空格,區分大小寫,字串長度小於等於1000。

測試樣例:

"hello world","worldhello "
返回:false
"waterbottle","erbottlewat"
返回:true
思路:

若s1經過翻轉能得到s2   那麼s1一定是s2+s2的子串

考察s2="abcd"  s2+s2="abcdabcd"   那麼s1若能翻轉到s2   那麼一定是s2+s2中的子串

採取kmp演算法求解即可

bool checkreverseequal(string s1, string s2)

s2+=s2;//s2迴圈兩次 判斷 s1是否為s2+s2的子串

int i=0;

int j=0;

len2=s2.size();

while(i

演算法題 翻撲克

我手中有一堆撲克牌,但是觀眾不知道它的順序。1 第一步,我從牌頂拿出一張牌,放到桌子上。2 第二步,我從牌頂再拿一張牌,放在手上牌的底部。3 第三步,重複第一步 第二步的操作,直到我手中所有的牌都放到了桌子上。最後,觀眾可以看到桌子上牌的順序是 牌底部 1,2,3,4,5,6,7,8,9,10,11...

演算法提高 貪心演算法 翻硬幣

問題背景 藍橋杯 歷屆試題 prev 6 翻硬幣 小明正在玩乙個 翻硬幣 的遊戲。桌上放著排成一排的若干硬幣。我們用 表示正面,用 o 表示反面 是小寫字母,不是零 比如,可能情形是 oo oooo 如果同時翻轉左邊的兩個硬幣,則變為 oooo oooo 現在小明的問題是 如果已知了初始狀態和要達到...

翻硬幣思路 演算法馬拉松11 A翻硬幣

題目 有 n 個硬幣,一開始全部正面朝上,每次可以翻轉 k 個硬幣 k 小於 n 那麼至少要 p 次翻轉,才能讓所有硬幣反面朝上,求 p 的值。如果不能成功翻轉則輸出 1 input 輸入2個數 n,k 1 n 10 9,1 k 10 9 output 輸出翻轉次數的最小值。如果不能成功翻轉則輸出 ...