LeetCode-345-反轉字串中的母音字母

雄獅虎豹發表於2021-09-27

反轉字串中的母音字母

題目描述:編寫一個函式,以字串作為輸入,反轉該字串中的母音字母。

示例說明請見LeetCode官網。

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/probl...
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

解法一:棧倒序
  • 首先初始化母音字母列表vowels;
  • 然後迴圈判斷s中的每一個字元,將母音字母依次放入棧中;
  • 然後再迴圈s一遍,將出現的母音字母用棧頂元素出棧後替換;
  • 迴圈處理完成後即是反轉後的字串。
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;

public class LeetCode_345 {
    /**
     * 母音字母列表
     */
    private static List<Character> vowels = new ArrayList<>();

    static {
        // 初始化所有的母音字母
        vowels.add('a');
        vowels.add('e');
        vowels.add('i');
        vowels.add('o');
        vowels.add('u');
        vowels.add('A');
        vowels.add('E');
        vowels.add('I');
        vowels.add('O');
        vowels.add('U');
    }

    public static String reverseVowels(String s) {
        if (s == null || s.length() < 2) {
            return s;
        }

        char[] sList = s.toCharArray();
        Stack<Character> vowelStack = new Stack<>();
        for (char c : sList) {
            if (vowels.contains(c)) {
                // 將母音字母放入棧中
                vowelStack.push(c);
            }
        }
        for (int i = 0; i < sList.length; i++) {
            if (vowels.contains(sList[i])) {
                // 將母音字母從棧中取出,倒序取出
                sList[i] = vowelStack.pop();
            }
        }
        return new String(sList);
    }

    public static void main(String[] args) {
        System.out.println(reverseVowels("hello"));
    }
}
【每日寄語】 無論別人怎麼看,我絕不打斷自己節奏,喜歡的事情自然可以堅持。

相關文章