IncredibleThings

导航

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编辑  收藏  举报