程式設計之美 字串移位包含

2021-07-14 18:01:56 字數 696 閱讀 4415

問題描述:

兩個字串s1, s2,將s1迴圈位移,判斷s2是否被包含在其中。

例如:s1 = "abcd"  s2= "cda"  將s1迴圈位移後得到bcda,s2被包含在s1迴圈位移後的字串中。

思路 1:

將s1移位一次,然後與s2比較一次。如果字串比較長,效率很低。

思路 2:

假設保留s1移位的結果,

例如:s1 = "abcd"  

位移一次  s1 = "abcda"

位移二次  s1 = "abcdab"

位移三次  s1 = "abcdabc"

位移四次  s1 = "abcdabcd"

位移4次後,s1變成了 s1+s1, 

利用這個特點直接判斷s2是否是 

s1+s1的字串。

**:(方法2)

#include using namespace std;

bool find(char* src, char* dst)

else

delete p2src;

p2src = null;

return find;

}void main()

程式設計之美 字串移位包含的問題(續)

問題描述 給定兩個字串s1和s2,要求判定s2是否能被s1迴圈移位 rotate 得到的字串包含。例如,給定字串s1 aabcd和s2 cdaa,返回true 給定s1 abcd和s2 acbd返回false。對問題的兩種分析,詳見 思路一是暴力演算法,窮舉所有最後還不一定找到。思路二使用空間換取時...

程式設計之美 字串移位包含的問題(續)

問題描述 給定兩個字串s1和s2,要求判定s2是否能被s1迴圈移位 rotate 得到的字串包含。例如,給定字串s1 aabcd和s2 cdaa,返回true 給定s1 abcd和s2 acbd返回false。對問題的兩種分析,詳見 思路一是暴力演算法,窮舉所有最後還不一定找到。思路二使用空間換取時...

字串移位包含的問題(程式設計之美)

分類 程式語言 c 2012 06 26 19 38 210人閱讀收藏 舉報程式設計演算法 字串移位包含的問題 程式設計之美 p221 223 問題 給定兩個字串s1和s2,要求判斷s2是否能夠被通過s1做迴圈移位 rotate 得到的字串包含。例如,s1 aabcd和s2 cdaa,返回true ...