問題描述:
兩個字串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 ...