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

2021-06-21 16:10:51 字數 511 閱讀 5227

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

s1=abcd和s2=abcd,返回false。

1.思路:將字串s1迴圈左移且每次移動一位,得到乙個新的字串,然後比較s2是否被s1所包含,包含則返回true。比較過程中用到了strstr(char*, char*)函式

bool iscontains(char* psource, char* pstr) 

//每次迴圈左移1位

int length = strlen(psource);

for (int i = 0; i < length; ++i)

psource[length - 1] = temp;

//如果包含的返回true

if (0 == strstr(psource, pstr))

} return false;

}

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