ʕ·͡ˑ·ཻ ʕ•̫͡• ʔ•̫͡•ཻʕ•̫͡•ʔ•͓͡•ʔ

30:字符环

描述

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

输入

一行,包含两个字符串,分别对应一个字符环。这两个字符串之间用单个空格分开。字符串长度不超过255,且不包含空格等空白符。

输出

输出一个整数,表示这两个字符环上最长公共字符串的长度。

样例输入

1
ABCEFAGADEGKABUVKLM MADJKLUVKL

样例输出

1
6

解题:

AC代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include<bits/stdc++.h>
using namespace std;

int main(){
string s,str;
int len;
getline(cin,str);
len = str.length();
s+=" ";
for(int i=0;i<len;i++){
s+=str[i];
}
int i = s.length()-1;
int j = i;
while(i>=0){
if(s[i] != ' '){
--i;
continue;
}
else if(s[i] == ' '){
for(int p = i+1;p<=j;p++) cout<<s[p];
cout<<" ";
j = i-1;
--i;
}
}
return 0;
}