Algoritmo: clasificación rápida de ideas para invertir las vocales en una cadena
Invierte las vocales en la cuerda
345. Vocales inversas en una cadena
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
示例 1:
输入: "hello"
输出: "holle"
示例 2:
输入: "leetcode"
输出: "leotcede"
说明:
元音字母不包含字母"y"。
Todo el mundo conoce la cola rápida, así que no diré mucho, la ontología parece no tener nada que ver con la cola rápida, pero de hecho es bastante relevante.
La fila rápida selecciona el yuan pivote como condición de intercambio, y también podemos usar la letra vocal como condición de intercambio.
public String reverseVowels(String s) {
if(s==null||s.length()<2){
return s;
}
char cs[]=s.toCharArray();
quickSwap(cs,0,cs.length-1);
return new String(cs);
}
public void quickSwap(char[] cs,int left,int right){
while(left<right){
while(left<right&&!suit(cs[right])){
right--;
}
while(left<right&&!suit(cs[left])){
left++;
}
if(left<right){
swap(cs,left,right);
}
left++;
right--;
}
}
private boolean suit(char c){
return c=='a'||c=='e'||c=='i'||c=='o'||c=='u'||c=='A'||c=='E'||c=='I'||c=='O'||c=='U';
}
private void swap(char[] cs,int i,int j){
char temp=cs[i];
cs[i]=cs[j];
cs[j]=temp;
}