210725 字符环

题目描述

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

输入格式

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

输出格式

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

样例

样例输入

ABCEFAGADEGKABUVKLM MADJKLUVKL
样例输出

6
数据范围与提示 分类标签

[字符串] [字符数组] [枚举] [普及-]

C++题解代码

#include <bits/stdc++.h>
using namespace std;

string a;
string b;
int c;
int d;
int e;
int f;
int g;
int h;


// The main procedure
int main() {
  cin>>a;
  cin>>b;
  g = a.size();
  h = b.size();
  c = 0;
  a += a;
  b += b;
  for (int i = 0; i < g; i++) {
    for (int j = 0; j < h; j++) {
      d = 0;
      while ((a[(d+i)] == b[(d+j)]) && ((d < g) && (d < h))) {
        d++;
      }
      if (d > c) {
        c = d;
      }
    }
  }
  cout<<c;
  return 0;
}

Blockly题解代码图片