1. 程式人生 > >345. Reverse Vowels of a String

345. Reverse Vowels of a String

轉字符串 ont pan == while arr toc problem val

原題鏈接:https://leetcode.com/problems/reverse-vowels-of-a-string/description/
跟反轉字符串那道題目類似,直接雙指針方法走起:

import java.util.HashSet;

/**
 * Created by clearbug on 2018/2/26.
 */
public class Solution {

    public static void main(String[] args) {
        Solution s = new Solution();
        System.out.println(s.reverseVowels
("hello")); System.out.println(s.reverseVowels("leetcode")); } public String reverseVowels(String s) { if (s == null || s.length() < 2) { return s; } HashSet<Character> set = new HashSet<>(10); set.add(‘a‘); set.add(‘o‘); set.add
(‘e‘); set.add(‘i‘); set.add(‘u‘); set.add(‘A‘); set.add(‘O‘); set.add(‘E‘); set.add(‘I‘); set.add(‘U‘); char[] chars = s.toCharArray(); int i = 0, j = s.length() - 1; while (i < j) { while (i < j && !set.contains
(chars[i])) { i++; } while (j > i && !set.contains(chars[j])) { j--; } if (i == j) { return String.valueOf(chars); } chars[i] ^= chars[j]; chars[j] ^= chars[i]; chars[i] ^= chars[j]; i++; j--; } return String.valueOf(chars); } }

345. Reverse Vowels of a String