字符串环(字符串包含)

题目描述

有两个字符构成的环。请写一个程序,计算这两个字符环上最长公共字符串的长度。例如,字符串“ABCEFAGADEGKABUVKLM”的首尾连在一起,构成一个环;字符串“MADJKLUVKL”的首尾连在一起,构成一个另一个环;“UVKLMA”是这两个环的一个公共字符串。
 

输入

若干行,每行包括两个不包含空格的字符串。这两个字符串用空格分开。若其中某个字符串的长度为1,则表示结束。否则,每个字符串的首尾相连即为一个环。每个环上字符总数不超过255。

输出

为每行输入,分别输出一个整数,表示这两个字符环上最长公共字符串的长度。最后一行没有输出。
 

样例输入

ABCEFA24*92(GADEGKABUVKLM  AD&30ijJKLAaUVKLM
313435t974  008bac
A 33

样例输出

6
0
#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
 
int main (void) 
{
	int  t, max;
	string s1, s2, st;
	while(cin >> s1 >> s2) 
	{
		if(s1.length()==1 || s2.length()==1) 
		{
			break;
		}
		s1 = s1 + s1;
		s2 = s2 + s2;
		max = 0;
		while(s2.length() > 0) 
		{
			for(int i=1; i<=s2.length(); i++) 
			{
				t = s1.find(s2.substr(0, i));
				if(t>-1 && i>max)
				    max = i;
			}
		   s2.erase(0, 1);
		}
		cout << max << endl;
	}
	return 0;
}

  

//判断一个字符串是否包含在另一个字符串之内(连续)
 
int main (void) 
{
	int  t, max;
	string s1, s2, st;
	while(cin >> s1 >> s2) 
	{
		if(s1.find(s2)==s1.npos)   //s1是否包含s2 
		   cout<<"NO"<<endl;
		else 
		    cout<<"YES"<<endl;
	}
	return 0;
}
//判断一个字符串是否包含在另一个字符串之内(非连续)

#include <iostream>
#include <string>
#include <cstdio>
#include<regex>
using namespace std;
string a="happy";
int main ()
{
    string str;
     cin>>str;
    regex pattern(a);
    if(regex_match(str,pattern))
           cout<<"No!"<<endl;
     else
           cout<<"Yes!"<<endl;
      return 0;
}

  

 

posted @ 2018-11-13 16:01  道微真理  阅读(1607)  评论(0编辑  收藏  举报