LeetCode-Reverse Vowels of a String
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".
public class Solution { private final char[] vowels={'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'}; public String reverseVowels(String s) { char[] sArray=s.toCharArray(); int l=0; int r=sArray.length-1; while(l<r){ if(isVowel(sArray[l]) && isVowel(sArray[r])){ char temp=sArray[l]; sArray[l]=sArray[r]; sArray[r]=temp; r--; l++; } else if(isVowel(sArray[l])){ r--; } else if(isVowel(sArray[r])){ l++; } else{ l++; r--; } } return new String(sArray); } public boolean isVowel(char c){ for(int i=0; i<vowels.length; i++){ if(c==vowels[i]){ return true; } } return false; } }
class Solution { public String reverseVowels(String s) { if(s == null || s.length() == 0){ return ""; } int low = 0; int high = s.length()-1; StringBuilder sb = new StringBuilder(s); while(low <= high){ if( isVowel(sb.charAt(low)) && isVowel(sb.charAt(high))){ char temp = sb.charAt(low); sb.setCharAt(low, sb.charAt(high)); sb.setCharAt(high, temp); low++; high--; } else if(isVowel(sb.charAt(low))){ high--; } else if (isVowel(sb.charAt(high))){ low++; } else{ low++; high--; } } return sb.toString(); } public boolean isVowel (char c){ if(c == 'a' || c == 'e' || c == 'i' || c == 'u'|| c == 'o' || c == 'A' || c == 'E' || c == 'I' || c == 'U' || c == 'O' ) { return true; } return false; } }
posted on 2016-07-19 05:00 IncredibleThings 阅读(112) 评论(0) 编辑 收藏 举报