本題就是找子字元是否出現。
不過稍微問了個迴圈字串,直接把原來的字串複製多一倍就可以了。
剩下的就是strstr函式的實現了。
當然你要偷懶直接呼叫,strstr函式,或者使用string中的find函式都是可以過掉的。不過面試的時候就不能這麼做了。
這個時候使用kmp是很好的辦法,聽說微軟面試,看到你用kmp也無可挑剔了,故此要學好這個演算法。
以前學這個算法學了好長時間,現在看來這個演算法也是基礎演算法了,高手必須熟練的。
#include #include const int max_n2 = 100002;
const int max_n1 = 200005;
char s1[max_n1];
char s2[max_n2];
int nexttbl[max_n2];
int n1, n2;
void getnext() }}
int main()
strncpy(s1+n1, s1, n1); //concatenate, double s1 characters
n1 <<= 1;
n1--;
getnext();
int j = 0;
for (int i = 0; n2-j <= n1-i && j < n2; i++)
}if (j == n2) puts("yes");
else puts("no");
} return 0;
}
HDU2203 親和串(碾壓KMP演算法)
人隨著歲數的增長是越大越聰明還是越大越笨,這是乙個值得全世界科學家思考的問題,同樣的問題eddy也一直在思考,因為他在很小的時候就知道親和串如何判斷了,但是發現,現在長大了卻不知道怎麼去判斷親和串了,於是他只好又再一次來請教聰明且樂於助人的你來解決這個問題。親和串的定義是這樣的 給定兩個字串s1和s...
hdu 2203 親和串 字串 KMP
題目描述 給定兩個串s1,s2,問是否能夠通過對s1串進行位移操作使得新串ss1中包含s2 解題思路 看到題目,我們假設可以通過位移使得s1中含s2,即s1前面的串可以用在串的後面使得s2可以匹配,這樣很自然地想到在s1後面在補上s1,讓兩個s1拼接乙個新串ss,在ss中計算next陣列,再讓s2與...
HDU 2203 親和串 多個字串函式的運用
problem description 人隨著歲數的增長是越大越聰明還是越大越笨,這是乙個值得全世界科學家思考的問題,同樣的問題eddy也一直在思考,因為他在很小的時候就知道親和串如何判斷了,但是發現,現在長大了卻不知道怎麼去判斷親和串了,於是他只好又再一次來請教聰明且樂於助人的你來解決這個問題。親...