Description
Polycarp loves lowercase letters and dislikes uppercase ones. Once he got a string s consisting only of lowercase and uppercase Latin letters.
Let A be a set of positions in the string. Let's call it pretty if following conditions are met:
- letters on positions from A in the string are all distinct and lowercase;
- there are no uppercase letters in the string which are situated between positions from A (i.e. there is no such j that s[j] is an uppercase letter, and a1 < j < a2 for some a1 and a2 from A).
Write a program that will determine the maximum number of elements in a pretty set of positions.
Input
The first line contains a single integer n (1 ≤ n ≤ 200) — length of string s.
The second line contains a string s consisting of lowercase and uppercase Latin letters.
Output
Print maximum number of elements in pretty set of positions for string s.
Sample Input
11aaaaBaabAbA
Sample Output
2
HINT
In the first example the desired positions might be 6 and 8 or 7 and 8. Positions 6 and 7 contain letters 'a', position 8 contains letter 'b'. The pair of positions 1 and 8 is not suitable because there is an uppercase letter 'B' between these position.
题解
在一个字符串中找一段,使其中没有大写字母,并且小写字母种数最多。
考虑$n<=200$,直接暴力枚举。
I think there is no need to tell you how to solve this problem...
//It is made by Awson on 2017.9.29 #include <set> #include <map> #include <cmath> #include <ctime> #include <queue> #include <stack> #include <vector> #include <cstdio> #include <string> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> #define LL long long #define Max(a, b) ((a) > (b) ? (a) : (b)) #define Min(a, b) ((a) < (b) ? (a) : (b)) #define sqr(x) ((x)*(x)) #define lowbit(x) ((x)&(-(x))) using namespace std; void read(int &x) { ; ); ch = getchar()); ; isdigit(ch); x = (x<<)+(x<<)+ch-, ch = getchar()); x *= -*flag; } int n, ans; ]; ]; void work() { read(n); ; i <= n; i++) cin>>ch[i]; ; i <= n; i++) for (int j = i; j <= n; j++) { memset(judge, , sizeof(judge)); ; for (int k = i; k <= j; k++) if (ch[k] >= 'A' && ch[k] <= 'Z') { flag = ; break; } ; if (flag) continue; ; ; k < ; k++) cnt += judge[k]; ans = Max(ans, cnt); } printf("%d\n", ans); } int main() { work(); ; }