字串移位包含的問題

2021-08-26 21:49:25 字數 842 閱讀 7384

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

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

#include#includeint rotate_conbine(char *src, char *des);

int main()

int rotate_conbine(char *src, char *des)

int doubel_src_conbine(char *src, char *des)

s = src;

while(*s != '\0')

p++;

*p = '\0';

if(strstr(temp, des) != null)

return 1;

else

return 0;

}

解法三:第二種方法利用了「提高空間複雜度來換取時間複雜度的降低」的思路,適用於對時間複雜度要求高的場合。能否不需要申請過多新的空間,解決這個問題。可以用指標的方法做到。

#includeint doubel_src_conbine(char *src, char *des);

int ptr_contain(char *src, char *des);

int main()

int ptr_contain(char *src, char *des)

return 1;

}

字串移位包含問題

問題描述 給定兩個字串s1和s2,要求判定s2是否能夠被s1做迴圈移動得到的字串包含。如s1 aabcd和s2 cdaa,則s1迴圈移動後包含s2,返回true s1 abcd和s2 acbd,則s1迴圈移動後不包含s2,返回false 解題思路 1 可以發現,s1迴圈移動後的結果肯定包含在字串s1...

字串移位包含問題

本問題 於 程式設計之美 問題描述 給定兩個字串s1和s2,要求判定s2是否能夠被通過s1做迴圈移位 rotate 得到的字串包含。例如,給定s1 aabcd和s2 cdaa,返回true 給定s1 abcd和s2 acbd,返回false。下面有兩種解法,第一種是列舉法 第二種是用了一種技巧,實現...

字串移位包含的問題

字串移位包含的問題 給定兩個字串s1和s2,要求判斷s2是否能夠被s1做迴圈移位得到的字串包含,例如,給定s1 aabcd和s2 cdaa,返回true 給定s1 abcd和s2 acbd,返回false 在做這道題的時候我發現了乙個很容易出錯,但是去不容易找到原因。主要原因是我們對於全變數初始化位...