CF23A You're Given a String... 题解

Content

给定一个长度为 \(n\) 的字符串,求出至少出现两次的最长子串的长度。

数据范围:\(1\leqslant n\leqslant 100\)

Solution

我们直接暴力求出每个子串,然后统计它的出现次数(可以直接用 \(\texttt{map}\) 映射),最后将出现次数 \(\geqslant 2\) 的所有子串的长度取个最大值即可。

Code

string s, ss[10007];
map<string, int> vis;

int main() {
	cin >> s;
	int len = s.size(), ans = 0, cnt = 0;
	_for(i, 0, len - 1) {
		_for(j, 0, i) {
			cnt++;
			_for(k, j, i)
				ss[cnt] += s[k];
			vis[ss[cnt]]++;
		}
	}
	_for(i, 1, cnt) {
		int len = ss[i].size();
		if(vis[ss[i]] >= 2)	ans = max(ans, len);
	}
	writeint(ans);
	return 0;
}
posted @ 2021-12-17 14:23  Eason_AC  阅读(65)  评论(0)    收藏  举报