信息学奥赛一本通(2050:【例5.20】字串包含)
生活随笔
收集整理的這篇文章主要介紹了
信息学奥赛一本通(2050:【例5.20】字串包含)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
2050:【例5.20】字串包含
時(shí)間限制: 1000 ms ??? ??? 內(nèi)存限制: 65536 KB
提交數(shù): 613 ??? 通過(guò)數(shù): 197
【題目描述】
字符串移位包含問(wèn)題。
對(duì)于一個(gè)字符串來(lái)說(shuō),定義一次循環(huán)移位操作為:將字符串的第一個(gè)字符移動(dòng)到末尾形成新的字符串。
給定兩個(gè)字符串s1s1和s2s2,要求判定其中一個(gè)字符串是否是另一字符串通過(guò)若干次循環(huán)移位后的新字符串的子串。例如CDAA是由AABCD兩次移位后產(chǎn)生的新串BCDAA的子串,而ABCD與ACBD則不能通過(guò)多次移位來(lái)得到其中一個(gè)字符串是新串的子串。
【輸入】
一行,包含兩個(gè)字符串,中間由單個(gè)空格隔開(kāi)。字符串只包含字母和數(shù)字,長(zhǎng)度不超過(guò)3030。
【輸出】
如果一個(gè)字符串是另一字符串通過(guò)若干次循環(huán)移位產(chǎn)生的新串的子串,則輸出true,否則輸出false。
【輸入樣例】
AABCD CDAA【輸出樣例】
true【參考代碼】
C代碼:
#include<stdio.h> #include<string.h> #define N 65 char s1[N],s2[N],x[N],t[N]; int main() {int i;scanf("%s %s",s1,s2);if(strlen(s1)<strlen(s2)) // 將短的字符串作為預(yù)判字符串 {strcpy(t,s1);strcpy(s1,s2);strcpy(s2,t);}strcpy(x,s1);if(strstr(strcat(s1,x),s2)==NULL)printf("false\n");elseprintf("true\n");return 0; }C++代碼:
#include <iostream> using namespace std; string s1,s2; int main() {cin >> s1 >> s2;if(s1.size()<s2.size())swap(s1,s2);s1=s1+s1;if(s1.find(s2)!=s1.npos)cout << "true" << endl;elsecout << "false" << endl;return 0; }http://ybt.ssoier.cn:8088/problem_show.php?pid=2050
?
總結(jié)
以上是生活随笔為你收集整理的信息学奥赛一本通(2050:【例5.20】字串包含)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 信息学奥赛一本通(1102:与指定数字相
- 下一篇: 信息学奥赛一本通(1219:马走日)