P6832 [Cnoi2020]子弦

题目链接

题目描述

Cirno 有一个字符串 $\texttt{S}$,并希望你能求出 $\texttt{S}$ 出现次数最多的非空子串的出现次数,记作 $p$。

输入格式

一行,一个字符串 $\texttt{S}$。($0 < | \texttt{S} | \le 10^7$,$\texttt{S}_x\in [ \texttt{a} , \texttt{z} ]$)

输出格式

一行,一个整数 $p$。

题解

对于长度为一符串,有且仅有一个子串为最大。对于长度大于一的字符串的子串,总包含了单个字母为子串,也就保证了单个字母作为子串总是最大的,因此,只用统计单个字母出现的最大次数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <bits/stdc++.h>
using namespace std;
const int N = 1e7 + 5;
int ans, a[30];
char s[N];
int main() {
scanf("%s", s);
int len = strlen(s);
for (int i = 0; i < len; i++) {
a[s[i] - 'a']++;
ans = max(ans, a[s[i] - 'a']);
}
printf("%d", ans);
return 0;
}
文章作者: answerend42
文章链接: http://answerend42.github.io/2020/10/20/lg6382/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 answerend42的Blog