1. 程式人生 > >poj 3711: 字串移位包含問題

poj 3711: 字串移位包含問題

解題思路:

(1)字串處理

(2)string性質的應用

(3)兩個字串都可能是子串

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
	int n;
	cin>>n;
	string astring,bstring,cstring;
	bool flag;
	while(n--)
	{
		cin>>astring>>bstring;
		flag = false;
		//bstring為子串 
		for(int i=0;i<astring.length();i++)
		{
			cstring.clear();
			cstring += astring.substr(i,astring.length() - i);
			cstring += astring.substr(0,i);
			//cout<<cstring<<endl;
			if(cstring.find(bstring) < cstring.length())
			{
				flag = true;
				break;
			}
		}
		//astring為子串 
		for(int i=0;i<bstring.length();i++)
		{
			cstring.clear();
			cstring += bstring.substr(i,bstring.length() - i);
			cstring += bstring.substr(0,i);
			//cout<<cstring<<endl;
			if(cstring.find(astring) < cstring.length())
			{
				flag = true;
				break;
			}
		}
		if(flag)
			cout<<"true"<<endl;
		else
			cout<<"false"<<endl;
	}
	return 0;
}