class Solution {
public int longestBeautifulSubstring(String word) {
int len = word.length();
int left = 0;
int[] count = new int[5];
//count[0] -- a的个数
//count[1] -- e的个数
//count[2] -- i的个数
//count[3] -- o的个数
//count[4] -- u的个数
int ans = 0;
int right = 0;
char lastChar = word.charAt(0);
while(right < len){
char ch = word.charAt(right);
if(ch == 'a' && (count[1] >0 || count[2] >0 || count[3] > 0 || count[4] > 0))
{
left = right;
count = new int[5];
}
else if(ch == 'e' && (count[0] <=0 || count[2] >0 || count[3] > 0 || count[4] > 0)){
right += 1;
left = right;
count = new int[5];
}
else if(ch == 'i' && (count[0] <=0 || count[1] <=0 || count[3] > 0 || count[4] > 0)){
right += 1;
left = right;
count = new int[5];
}
else if(ch == 'o' && (count[0] <=0 || count[1] <=0 || count[2] <= 0 || count[4] > 0)){
right += 1;
left = right;
count = new int[5];
}
else if(ch == 'u' && (count[0] <=0 || count[1] <=0 || count[2] <= 0 || count[3] <= 0)){
right += 1;
left = right;
count = new int[5];
}
else{
if(ch == 'a'){
count[0] += 1;
}
if(ch == 'e'){
count[1] += 1;
}
if(ch == 'i'){
count[2] += 1;
}
if(ch == 'o'){
count[3] += 1;
}
if(ch == 'u'){
count[4] += 1;
}
if(count[0] >0 && count[1] >0 && count[2] >0 && count[3] >0 && count[4] >0)
{
ans = Math.max(ans,right - left + 1);
}
right += 1;
}
}
return ans;
}
}
class Solution {
public int longestBeautifulSubstring(String word) {
int len = word.length();
int left = 0;
int ans = 0;
int right = 1;
Queue<Character> queue = new LinkedList<>();
char lastChar = word.charAt(0);
queue.add(lastChar);
for(right = 1;right < len;right++){
char ch = word.charAt(right);
if(!queue.contains(ch))
queue.add(ch);
if(ch >= lastChar){
if(queue.size()== 5)
ans = Math.max(ans,right-left+1);
}
else{
left = right;
queue.clear();
queue.add(ch);
}
lastChar = ch;
}
return ans;
}
}