题目来源:
leetcode题目,网址:345. 反转字符串中的元音字母 - 力扣(LeetCode)
解题思路:
left从前往后寻找元音字母,right从后往前寻找元音字母,若二者都找到元音字母时,left小于right,交换两元音字母,否则结束查找。
解题代码:
class Solution {
public String reverseVowels(String s) { //字符串长度大于0
int left=0;
int right=s.length()-1;
char[] sArr=s.toCharArray();
Set<Character> set=new HashSet<>();
Collections.addAll(set,'a','A','e','E','i','I','o','O','u','U');
while(left<right){
while((left<sArr.length-1) && (!set.contains(sArr[left])) ){
left++;
}
while(right>=0 && (!set.contains(sArr[right]))){
right--;
}
if(left<right && left<sArr.length-1 && right>=0){
char temp=sArr[left];
sArr[left]=sArr[right];
sArr[right]=temp;
}
left++;
right--;
}
return new String(sArr);
}
}
总结:
注意 String 类型使用 fianl 修饰,不可重新赋值。