《程式設計之美》3 1 字串移位包含的問題

2021-06-06 03:25:50 字數 486 閱讀 6834

問題:給定兩個字串s1和s2,要求判定s2是否能夠被s1做迴圈移位(rotate)得到的字串包含。例如,給定s1 = aabcd 和 s2 = cdaa ,返回true;給定s1 = abcd 和 s2 = acbd,返回false.

解法一:使用最直接的方法對s1進行迴圈移位,再進行字串包含的判斷,從而遍歷其所有的可能性。

#includeusing namespace std;

char src = "aabbcd";

char des = "cdaa";

bool main()

} cout << "des not include in src" << endl;

return false;

}

解法二:我們把前面移走的資料進行保留,會發現有如下的規律:對s1做迴圈移位所得到的字串都將是字串s1s1的子字串。如果s2可以由s1迴圈移位得到,那麼s2一定在s1s1上。

程式設計之美3 1 字串移位包含問題

程式設計之美3.1 字串移位包含問題。判斷s2能否被s1做迴圈移位得到的字串包含,若直接判斷效率較低。可以將s1s1連線起來,如果s2可以通過迴圈移位得到,則s2一定是s1s1的子串,可以通過呼叫strstr得到。時間複雜度o n m 不過strstr的實現效率較低,可以使用kmp判斷是否是子串。每...

程式設計之美3 1 字串移位包含問題

這道題目的意思是給定乙個字串,作為源字串,之後給出其他的字串,確定源字串是否能夠經過旋轉而得到給定的字串,即移位包含問題。假如,給定乙個字串 abcdefg,接著給定字串 cdefgab,很顯然,給定的字串是可以經過源字串旋轉而得到的,但是,給定字串 cdegfab 就不能由源字串經過旋轉而得到。當...

程式設計之美3 1 字串移位包含問題

這道題目的意思是給定乙個字串,作為源字串,之後給出其他的字串,確定源字串是否能夠經過旋轉而得到給定的字串,即移位包含問題。假如,給定乙個字串 abcdefg,接著給定字串 cdefgab,很顯然,給定的字串是可以經過源字串旋轉而得到的,但是,給定字串 cdegfab 就不能由源字串經過旋轉而得到。當...