题目描述
子串是连续的。
牛可乐 最喜爱的字符串是
。
牛可乐得到了一个纯数字的字符串 ,他想知道在可以任意打乱 顺序的情况下,最多有多少个不同的子串为 。
当两个子串 满足 或 时它们被认为是不同的。
输入描述:
第一行,一个正整数 |S|,表示 S 的长度。
第二行,一个字符串 S,其字符集为 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}。
保证
。
输出描述:
输出一行,一个整数表示答案。
输入
11
11451419266
输出
1
说明
一种最优打乱方案为 “11451492616”,有一个子串为 “616” 。
题解
-
和 以外不需要考虑。
-
要让 子串最多一定是 ,这样后面的串可以用前面的 ,数量为 。(可以理解为前面一个 后面 循环)
-
时间复杂度 。
AC-Code
#include <bits/stdc++.h>
using namespace std;
char s[200005]; int cnt[10], n;
int main() {
scanf("%d%s", &n, s);
for (int i = 0; i < n; ++i) ++cnt[s[i] - '0'];
cout << min(cnt[6] - 1, cnt[1]);
return 0;
}