程式設計之美3 1字串移位包含的問題的擴充套件問題

2021-06-16 08:36:21 字數 522 閱讀 3744

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

我的思路是這樣的:找出s2中第乙個字元在s1的位置記為p1,找出s2中最後乙個字元在s1中可能的位置記為p2,計算所有的p1與p2間的差值,若等於s2的長度,則比較p1與p2間的字串與s2,若兩者相等則返回true,否則返回false

出現的問題:開始寫**用的標頭檔案為string.h,這個應該為c語言的標頭檔案庫,結果string不能執行==,+操作。另外substr函式的引數搞錯了,第二個引數應該為子串的長度,而不是endindex

#include#include#includeusing namespace std;

bool rotstr(string src,string des)

}} }

return false;

}int main()

程式設計之美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 就不能由源字串經過旋轉而得到。當...