classSolution{privatebooleanisVowel(char c){return c =='a'|| c =='e'|| c =='i'|| c =='o'|| c =='u'|| c =='A'|| c =='E'|| c =='I'|| c =='O'|| c =='U';}public String reverseVowels(String s){if(s == null || s.length()<2)return s;char[] chars = s.toCharArray();// 这种赋值方法学到了 (之所以要赋值是因为 string 并非变量)int i =0, j = chars.length -1;while(i < j){// 双指针while(i < chars.length &&!isVowel(chars[i]))
i++;while(j >=0&&!isVowel(chars[j]))
j--;if(i < j){char temp = chars[i];
chars[i]= chars[j];
chars[j]= temp;
i++;
j--;}}return String.valueOf(chars);}}
Python
classSolution:defreverseVowels(self, s):
array =['a','e','i','o','u','A','E','I','O','U']
s =list(s)
left, right =0,len(s)-1while left < right:while(s[left]notin array)and left < right:
left +=1while(s[right]notin array)and left < right:
right -=1if left < right:
s[left], s[right]= s[right], s[left]
left+=1
right-=1return''.join(s)# 记住这样才能输出列表,不然会输出 str