题目地址
解题思路
要判断一个字符串是不是美好字符串,需要满足字符串中出现的字母必须是大小写都存在,所以可以引用islower()函数,同时保存当前的最长长度和当前字符串的起始位置。
代码实现(C++)
class Solution {
public:
string longestNiceSubstring(string s)
{
int n=s.size();
int maxPos=0;
int maxlength=0;
for(int i=0;i<n;i++)
{
int lower=0;
int upper=0;
for(int j=i;j<n;j++)
{
if(islower(s[j]))
{
lower|=1<<(s[j]-'a');
}
else
{
upper|=1<<(s[j]-'A');
}
if(lower==upper&&j-i+1>maxlength)
{
maxlength=j-i+1;
maxPos=i;
}
}
}
return s.substr(maxPos,maxlength);
}
};