給定兩個字串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 輸出翻轉次數的最小值。如果不能成功翻轉則輸出 ...