字串移位包含問題

2021-07-02 14:44:21 字數 463 閱讀 5816

本問題**於《程式設計之美》。

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

下面有兩種解法,第一種是列舉法;第二種是用了一種技巧,實現用空間換時間,現在的空間已經很大了。

int stringrotate1()

} return 0;

}int stringrotate2()

*(srctwo+len*2) = '\0';

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

retval = 1;

printf("%s\n", srctwo);

free(srctwo);

return retval;

}

字串移位包含問題

問題描述 給定兩個字串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作迴圈移位 得到的字串包含 假設給定s1 aabcd s2 cdaa 返回true 給定s1 abcd s2 acbd false 方法1 窮舉法 將長度為n的s1移動n次 每次移動1為 檢視是否包含s2 方法2 將長度為n的s1移動n次 保留每...

字串移位包含的問題

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