HDU 2203 親和串 多個字串函式的運用

2022-04-07 11:40:24 字數 1315 閱讀 1736

problem description 人隨著歲數的增長是越大越聰明還是越大越笨,這是乙個值得全世界科學家思考的問題,同樣的問題eddy也一直在思考,因為他在很小的時候就知道親和串如何判斷了,但是發現,現在長大了卻不知道怎麼去判斷親和串了,於是他只好又再一次來請教聰明且樂於助人的你來解決這個問題。

親和串的定義是這樣的:給定兩個字串s1和s2,如果能通過s1迴圈移位,使s2包含在s1中,那麼我們就說s2 是s1的親和串。

input 本題有多組測試資料,每組資料的第一行包含輸入字串s1,第二行包含輸入字串s2,s1與s2的長度均小於100000。

output 如果s2是s1的親和串,則輸出"yes",反之,輸出"no"。每組測試的輸出佔一行。

sample inputaabcd cdaa asd asdf

sample outputyes no

在字串s1後再接上s1,形成新的字串,再在s1中尋找是否有s2的子串,若有則為親和串.#include

char *strcat( char *str1, const char *str2 );

功能:函式將字串str2 連線到str1的末端,並返回指標str1. 例如:

printf( "enter your name: " );

scanf( "%s", name );

title = strcat( name, " the great" );

printf( "hello, %s\n", title );

#include

char *strcpy( char *to, const char *from );

功能:複製字串from 中的字元到字串to,包括空值結束符。返回值為指標to。

#include

char *strstr( const char *str1, const char *str2 );

功能:函式返回乙個指標,它指向字串str2 首次出現於字串str1中的位置,如果沒有找到,返回null。

#include

#include

using namespace std;

#define maxn 100005

char a[maxn];

char b[maxn];

char c[maxn*2];

int main()

{ while(cin>>a>>b)

{strcpy(c,a);

strcat(c,a);

if(strstr(c,b)!=0)

cout<注:本題中不用陣列c,直接strcat(a,a)是錯的!

hdu 2203 親和串 字串 KMP

題目描述 給定兩個串s1,s2,問是否能夠通過對s1串進行位移操作使得新串ss1中包含s2 解題思路 看到題目,我們假設可以通過位移使得s1中含s2,即s1前面的串可以用在串的後面使得s2可以匹配,這樣很自然地想到在s1後面在補上s1,讓兩個s1拼接乙個新串ss,在ss中計算next陣列,再讓s2與...

HDU 2203 親和串 KMP解法

本題就是找子字元是否出現。不過稍微問了個迴圈字串,直接把原來的字串複製多一倍就可以了。剩下的就是strstr函式的實現了。當然你要偷懶直接呼叫,strstr函式,或者使用string中的find函式都是可以過掉的。不過面試的時候就不能這麼做了。這個時候使用kmp是很好的辦法,聽說微軟面試,看到你用k...

HDU2203 親和串(碾壓KMP演算法)

人隨著歲數的增長是越大越聰明還是越大越笨,這是乙個值得全世界科學家思考的問題,同樣的問題eddy也一直在思考,因為他在很小的時候就知道親和串如何判斷了,但是發現,現在長大了卻不知道怎麼去判斷親和串了,於是他只好又再一次來請教聰明且樂於助人的你來解決這個問題。親和串的定義是這樣的 給定兩個字串s1和s...