zoukankan      html  css  js  c++  java
  • 345. Reverse Vowels of a String

    Write a function that takes a string as input and reverse only the vowels of a string.

    Example 1:

    Input: "hello"
    Output: "holle"
    

    Example 2:

    Input: "leetcode"
    Output: "leotcede"

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

    use two pointers

    naive solution:

    class Solution {
        public String reverseVowels(String s) {
            Set<Character> set = new HashSet<>();
            set.add('A');
            set.add('E');
            set.add('I');
            set.add('O');
            set.add('U');
            set.add('a');
            set.add('e');
            set.add('i');
            set.add('o');
            set.add('u');
            
            char[] c = s.toCharArray();
            int i = 0, j = c.length - 1;
            while(i < j) {
                if(set.contains(c[i]) && set.contains(c[j])) {
                    swap(c, i++, j--);
                } else if(set.contains(c[i])) {
                    j--;
                } else if(set.contains(c[j])) {
                    i++;
                } else {
                    i++;
                    j--;
                }
            }
            return new String(c);
        }
        
        private void swap(char[] c, int i, int j) {
            char tmp = c[i];
            c[i] = c[j];
            c[j] = tmp;
        }
    }

    optimized

    class Solution {
        public String reverseVowels(String s) {
            Set<Character> set = new HashSet<>(Arrays.asList('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'));
            
            char[] c = s.toCharArray();
            int i = 0, j = c.length - 1;
            while(i < j) {
                while(i < j && !set.contains(c[i])) {
                    i++;
                }
                while(i < j && !set.contains(c[j])) {
                    j--;
                }
                char tmp = c[i];
                c[i] = c[j];
                c[j] = tmp;
                
                i++;
                j--;
            }
            return new String(c);
        }
    }
  • 相关阅读:
    用户场景分析
    团队项目个人工作总结(4月22日)
    团队项目个人工作总结(4月21日)
    团队项目个人工作总结(4月20日)
    第九周学习进度情况
    站立会议10-个人总结
    站立会议9-个人总结
    站立会议8-个人总结
    textarea中文提交乱码问题解决
    站立会议7-个人总结
  • 原文地址:https://www.cnblogs.com/fatttcat/p/11338935.html
Copyright © 2011-2022 走看看