345. Reverse Vowels of a String
Difficulty: Easy
Write a function that takes a string as input and reverse only the vowels of a string.
Example 1:
Given s = "hello", return "holle".
Example 2:
Given s = "leetcode", return "leotcede".
说明:这里是翻转字符串中的原音,
比如字符串是:a, e, i , o, u
你们翻转过来就是 u, o, i, e, a; 第一个和最后一个,第二个和到二个。
遍历是最简单的方法,设置 left和right,两个坐标,分别从数组的头部和尾部逐渐开始遍历,遇到元音停下,遇到非元音分别往中间靠拢,直到两边都遇到元音,交换,再同时靠拢,终止条件是left>=right。
代码:
public class Solution {
public String reverseVowels(String s) {
char[] sArray = s.toCharArray();
int length = sArray.length;
int position = -1;
int left = 0;
char[] result = {'A', 'E', 'I', 'O', 'U','a', 'e', 'i', 'o', 'u', };
int right = sArray.length - 1;
while (left < right) {
char leftChar = sArray[left];
int leftifin = Arrays.binarySearch(result, leftChar);
if (leftifin < 0) {
left ++;
}
char rigthChar = sArray[right];
int rightifin = Arrays.binarySearch(result, rigthChar);
if (rightifin < 0) {
right --;
}
if(leftifin >= 0 && rightifin >= 0) {
char temp = sArray[left];
sArray[left] = sArray[right];
sArray[right] = temp;
left ++;
right --;
}
}
return new String(sArray);
}
}