力扣随机一题——所有元音按顺序排序的最长字符串
题目
1839. 所有元音按顺序排布的最长子字符串 - 力扣(LeetCode)
思路
利用滑动窗口的思想,对于每个窗口内的字符串都判断
- 子字符串包含所有五个元音字母。
- 子字符串中的元音字母按照字典序出现
用一个变量 maxLength 记录最长美丽子字符串的长度。
使用滑动窗口,遍历每个字符,并跟踪当前子字符串的元音字母是否满足字典序。
如果元音字母的顺序被打破,或者元音字母不满足条件(比如缺少某些元音),则重新开始。
更新 maxLength,并在找到符合条件的子字符串时更新其长度。
代码
public int longestBeautifulSubstring(String word) {
int max = 0;
int sumChar = 0;
int current = 0;
for(int i=0;i<word.length();i++){
if(i>0&&word.charAt(i)>=word.charAt(i-1)){
current++;
if(word.charAt(i)!=word.charAt(i-1)){
sumChar++;
}
}else{
sumChar=1;
current=1;
}
if(sumChar==5){
max = Math.max(max,current);
}
}
return max;
}
结语
最近实习有点忙,都没时间刷题了💔