课程题目 : 1003. 简单字符串匹配
题目:
Description
给定两个字符串S1和S2,要求判定S2是否能够被S1做循环移位得到的字符串包含。
说明:字符串S1和S2中不包含空格,每个字符串至少包含一个字符。
例如:给定S1=AABCD,S2=CDAA,则返回True;给定S1=ABCD,S2=ACBD,则返回False。
Input
第一行为整数N(0<N<1,000,000,000)
第二到N+1行是N组输入数据,每行包括两个字符串,字符串S1和字符串S2,其中字符串的长度不超过100。
Output
针对每个例子,如果S2能够被S1做循环移位得到的字符串包含,输出True,否则输出False。
每个输出结果为独立的一行。
Sample Input
2 AABCD CDAA ABCD ACBD
Sample Output
True False
题目很简单,主要是记录string类型里面find函数的使用
这里string里面的一个find函数的返回值是size_type,如果没找到的标志是npos,找到则返回s2在s1中的下标位置
1 #include<iostream> 2 using namespace std; 3 4 int main(){ 5 int n; 6 cin>>n; 7 while(n--){ 8 string s1,s2; 9 string::size_type position; 10 cin>>s1>>s2; 11 s1=s1+s1; 12 position=s1.find(s2); 13 if(position==s1.npos) 14 cout<<"False\n"; 15 else 16 cout<<"True\n"; 17 } 18 return 0; 19 }