问题 3959 --字符串移位包含问题(完善程序)

3959: 字符串移位包含问题(完善程序)★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 568  解决: 372
[提交][状态][命题人:]

题目描述

对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串。

给定两个字符串s1和s2,要求判定其中一个字符串是否是另一个字符串通过若干次循环移位后的新字符串的子串。例如CDAA是由AABCD两次移位后产生的新串BCDAA的子串,而ABCD与ACBD则不能通过多次移位来得到其中一个字符串是新串的子串。

#include <iostream>
______(1)_______ 
using namespace std;
int main()
{
	const int N=61;
	char s1[N],s2[N],x[N],t[N];
	int l1,l2;
	_____(2)_______
	if(strlen(s1)<strlen(s2))
	{
		strcpy(t,s1);
		______(3)_____
		strcpy(s2,t);
	}
	strcpy(x,s1);
	if(strstr(_____(4)__,s2)==NULL)
	cout<<"false\n";
	else
	cout<<"true\n";
	return 0; 
}


输入

一行,包含两个字符串,中间有单个空格隔开。字符串只包含字母和数字,长度不超过30.

输出

如果一个字符串是另一个字符串通过若干次循环移位产生的新串的子串,则输出true,否则输出false。
样例输入
Copy
AABCD CDAA
样例输出
Copy
true

提示

strstr(s1,s2)函数用于判断字符串s2是否是s1的子串

如果是,则该函数返回s2在s2中首次出现的地址;

否则,返回NULL

来源

[提交][状态]