LeetCode知识点总结 - 345

LeetCode 168. Excel Sheet Column Title

考点 难度
String Easy
题目

Given a string s, reverse only all the vowels in the string and return it.

The vowels are ‘a’, ‘e’, ‘i’, ‘o’, and ‘u’, and they can appear in both cases.

思路

用两个pointer,现判断是否都是vowel,如果不是就移动到最近的元音,之后swap两个位置上的字母。helper function:判断是否为vowel。

答案
public String reverseVowels(String s) {
        if (s.length() == 0) return s;
        char[] arr = s.toCharArray();
        int low = 0;
        int high = arr.length - 1;
        while (low < high) {
            if (!isVowel(arr[low]) && !isVowel(arr[high])) {
                low++;
                high--;
            } else if (!isVowel(arr[low])) {
                low++;
            } else if (!isVowel(arr[high])) {
                high--;
            } else {
                char temp = arr[low];
                arr[low] = arr[high];
                arr[high] = temp;
                low++;
                high--;
            }
        }
        return new String(arr);
    }

    private boolean isVowel(char ch) {
        ch = Character.toLowerCase(ch);
        return ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u';
    }
上一篇:算法设计与分析——分治法


下一篇:数据结构与算法分析——C++语言描述(第四版)Mark Allen Weiss 习题 第二章 算法分析