問題描述:給定兩個字串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 在做這道題的時候我發現了乙個很容易出錯,但是去不容易找到原因。主要原因是我們對於全變數初始化位...