列表

详情


NC207429. 最大值

描述

有一个字符串s,对于字符串中一个非前缀子串恰好为字符串的前缀我们称之为ac串。
请问给出一个字符串他的ac串最大长度为多少

输入描述

输入数据第一行是t,表示数据的组数,接下来每组数据输入一个字符串s
(t<=10,s<=1e5)

输出描述

输出最大长度

示例1

输入:

2
aaaaa
abacc

输出:

4
1

说明:

aaaab的ac串是aaa(2:4)
acac的ac串是ac(3:4)

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 732ms, 内存消耗: 592K, 提交时间: 2022-05-10 19:08:00

#include<bits/stdc++.h>
using namespace std;
int main(){
	int T;
	cin>>T;
	while(T--){
		string a;
		cin>>a;
		string c=a;
		c.erase(0,1);
		//cout<<c<<endl;
		for(int i=a.size()-1;i>=1;i--){
			string b=a.substr(0,i);
			//cout<<b<<endl;
			if(c.find(b)!=-1){
				cout<<i<<endl;
				break;
			}
		}
	}
}

C++14(g++5.4) 解法, 执行用时: 10ms, 内存消耗: 484K, 提交时间: 2020-05-31 17:21:59

#include<bits/stdc++.h>
using namespace std;
int t;
string s;
int main()
{
	for(cin >> t; t--; )
	{
		cin >> s;
		int ans = 0;
		for(int i = 1, j; i < s.size()-1; i++)
		{
			for(j = 0; s[j] == s[i+j]; j++);
			ans = max(ans, j);
		}
		cout << ans << endl;
	}
}

Python3(3.5.2) 解法, 执行用时: 31ms, 内存消耗: 3704K, 提交时间: 2020-05-31 20:25:06

i = int(input())
while i>0:
    i-=1
    x = input()
    for j in range(1,len(x)+1):
        if x.find(x[0:j],1,len(x))==-1 or j==len(x):
            print(j-1)
            break

上一题