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

    原题链接在这里:https://leetcode.com/problems/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".

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

    题解:

    典型的two pointers, 到了vowel时对调.

    Note: 对调完要再移动双指针.

    若用到Array.asList(arr), arr 这里要用Character型,而不是char型. 

    Time Complexity: O(s.length()). Space:O(s.length()), 因为建立了char array.

    AC Java:

     1 class Solution {
     2     Character [] vowels = {'A', 'E', 'I', 'O', 'U', 'a', 'e', 'i', 'o', 'u'};
     3     
     4     public String reverseVowels(String s) {
     5         if(s == null || s.length() == 0){
     6             return s;
     7         }
     8         
     9         HashSet<Character> hs = new HashSet<Character>(Arrays.asList(vowels));
    10         
    11         int i = 0; 
    12         int j = s.length()-1;
    13         char [] sArr = s.toCharArray();
    14         
    15         while(i<j){
    16             while(i<j && !hs.contains(sArr[i])){
    17                 i++;
    18             }
    19             
    20             while(i<j && !hs.contains(sArr[j])){
    21                 j--;
    22             }
    23             
    24             swap(sArr, i, j);
    25             i++;
    26             j--;
    27         }
    28         
    29         return new String(sArr);
    30     }
    31     
    32     private void swap(char [] arr, int i, int j){
    33         char temp = arr[i];
    34         arr[i] = arr[j];
    35         arr[j] = temp;
    36     }
    37 }
  • 相关阅读:
    汇编之EBP的认识。
    【转】PE详解
    迟到的,2016年终总结
    Java 反射
    Java 集合与容器类
    Java 类加载与实例化
    Java 类与对象
    Java 值传递与对象拷贝
    Java 面向对象
    二叉树
  • 原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/5812211.html
Copyright © 2011-2022 走看看