题意:
当一个字符串 s 包含的每一种字母的大写和小写形式 同时 出现在 s 中,就称这个字符串 s 是 美好 字符串。
比方说,"abABB" 是美好字符串,因为 'A' 和 'a' 同时出现了,且 'B' 和 'b' 也同时出现了。
然而,"abA" 不是美好字符串因为 'b' 出现了,而 'B' 没有出现。
给你一个字符串 s ,请你返回 s 最长的 美好子字符串 。如果有多个答案,请你返回 最早 出现的一个。
如果不存在美好子字符串,请你返回一个空字符串。
1 <= s.length <= 100
s 只包含大写和小写英文字母。
解法:
观察到串长度只有100,那么O(n^2)枚举所有字串,map标记一下,
然后判断标记的字符中,是否大小写都有即可.
code:
class Solution {
public:
string longestNiceSubstring(string s) {
int n=s.size();
string ans;
for(int i=0;i<n;i++){
map<char,int>mp;
string temp;
for(int j=i;j<n;j++){
temp+=s[j];
mp[s[j]]++;
int ok=1;
for(auto x:mp){
int i=x.first;
if(i>='a'&&i<='z'){
if(!mp[i-'a'+'A']){
ok=0;break;
}
}else{
if(!mp[i-'A'+'a']){
ok=0;break;
}
}
}
if(ok){
if(ans.size()<temp.size())ans=temp;
}
}
}
return ans;
}
};