码迷,mamicode.com
首页 > 其他好文 > 详细

Reverse Vowels of a String Leetcode

时间:2017-01-19 08:47:26      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:ash   while   方法   public   hash   blog   char   rac   code   

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".

Note:
The vowels does not include the letter "y".

 

这道题一开始没想到stirng可以变成char的array,就做复杂了。。。边界的时候还需要挺注意的。

public class Solution {
    public String reverseVowels(String s) {
        if (s == null || s.length() == 0) {
            return s;
        }
        int left = 0, right = s.length() - 1;
        Set<Character> vowel = new HashSet<>(Arrays.asList(new Character[] {‘a‘, ‘e‘, ‘i‘, ‘o‘, ‘u‘, ‘A‘, ‘E‘, ‘I‘, ‘O‘, ‘U‘}));
        StringBuilder newS = new StringBuilder();
        while (left < s.length()) {
            while (left < s.length() && !vowel.contains(s.charAt(left))) {
                newS.append(s.charAt(left));
                left++;
            }
            while (right >= 0 && !vowel.contains(s.charAt(right))) {
                right--;
            }
            if (right >= 0) {
                newS.append(s.charAt(right));
            }
            left++;
            right--;
        }
        return newS.toString();
    }
}

如果变成char array就很好做了

public class Solution {
    public String reverseVowels(String s) {
        if (s == null || s.length() == 0) {
            return s;
        }
        int left = 0, right = s.length() - 1;
        Set<Character> vowel = new HashSet<>(Arrays.asList(new Character[] {‘a‘, ‘e‘, ‘i‘, ‘o‘, ‘u‘, ‘A‘, ‘E‘, ‘I‘, ‘O‘, ‘U‘}));
        char[] str = s.toCharArray();
        while (left < right) {
            while (left < right && !vowel.contains(str[left])) {
                left++;
            }
            while (left < right && !vowel.contains(str[right])) {
                right--;
            }
            char tmp = str[left];
            str[left] = str[right];
            str[right] = tmp;
            left++;
            right--;
        }
        return new String(str);
    }
}

需要注意的是char数组转成string有这两种方法:

new String(charArray);
String.valueOf(charArray);

 

Reverse Vowels of a String Leetcode

标签:ash   while   方法   public   hash   blog   char   rac   code   

原文地址:http://www.cnblogs.com/aprilyang/p/6305360.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!