#2700. 字符个数

字符个数

【题目描述】

给定一个字符串,由字母和数字构成。将该字符串从某个点断开,分成两个部分,设这两个部分为 A 和 B,其中A和 B 都不为空。有一些字符会同时出现在 A和 B中。

假设 A 的长度小于等于 B的长度,在 B 中取出和 A 长度相等的连续子串,设为 C,统计该子串和 A共同出现的字符个数。从不同位置断开,取不同子串,同时出现在 A 和 C 中的字符个数是不一样的。

求同时出现在 A和 C 中的不同字符个数的最大值。

举例:字符串:"abAabc"。

第一个位置为断点,分为两部分:A 为"a",B 为 "bAabc"。在 B 中取长度为 1 的连续子串,有 "b"、"A"、"a"、"b"、"c",共同的字符个数分别为 0,0,1,0,0。

第二个位置为断点,分为两部分:A 为"ab",B 为 "Aabc"。在 B 中取长度为 2的连续子串,有 "Aa"、"ab"、"bc",共同的字符个数分别为 1,2,1。

第三个位置为断点,分为两部分:A 为"abA",B 为 "abc"。在 B 中取长度为 3的连续子串,有 "abc",共同的字符个数分别为 2。

因此,字符串"bAabc"同时出现在 A和 C 中的字符个数的最大值为 2。

【输入格式】

输入一行字符串,该字符串只包含 'A' - 'Z','a'- 'z','0' - '9'这些字符。

【输出格式】

输出一行一个整数,表示同时出现在 A和B中的相同同字符最多的个数。

【数据样例】

【输入数据 1】

111111111

【输出数据 1】

1

【输入数据 2】

abAabc

【输出数据 2】

2

【输入数据 3】

bcdabcdabcd1122331111abcdabcdabcd

【输出数据 3】

6

【说明/提示】

【样例 1 解释】

字符串"11111111" 不管在哪个位置断点,A和 C 中的不同字符都只有一个"1"。

【样例 2 解释】

字符串"abAabc",如题目中的解释,同时出现在 A和 C 中的字符个数的最大值为 2。

【样例 2 解释】

字符串"abcdabcdabcd1122331111abcdabcdabcd",A字符串为"abcdabcdabcd11223",B字符串为"31111abcdabcdabcd",C字符串为"31111abcdabcdabcd"时,A和C字符串的不同字符个数为6个。

【数据范围】

测试点编号 字符串长度的范围
1 ≤10
2~10 ≤100
11~14 ≤2000
15~20 ≤10000