# [2785] Sort Vowels In A String ## 題目資訊 - **難度**: Medium - **標籤**: String, Sorting - **題目連結**: [LeetCode](https://leetcode.com/problems/sort-vowels-in-a-string/) - **練習日期**: 2025-09-11 ## 題目描述 給定一個 0-indexed 的字串 s,重新排列 s 以獲得新字串 t,使得: 所有子音保持在原來的位置 母音必須按照 ASCII 值的非遞減順序排序 更正式地說: 如果存在索引 i,其中 0 <= i < s.length 且 s[i] 是子音,那麼 t[i] = s[i] 對於索引對 i, j,其中 0 <= i < j < s.length 且 s[i] 和 s[j] 都是母音,那麼 t[i] 的 ASCII 值不能高於 t[j] 母音定義: 'a', 'e', 'i', 'o', 'u' 以及它們的大寫形式 ## 解題思路 ### 初步分析 - 這題主要考察什麼概念? 這題主要考察字串處理和排序概念 - 有什麼關鍵限制條件? - 預期時間/空間複雜度? O(n log k) / O(k),其中 n 為字串長度,k 為母音數量 ### 解法概述 1. **解法**: - 思路: 1. 遍歷字串,收集所有母音及其位置 2. 對母音字符進行排序 3. 將排序後的母音按原位置重新放回字串 - 時間複雜度:O(n + k log k) 其中 n 是字串長度,k 是母音數量 - 空間複雜度:O(k) 存儲母音字符和位置 ## 測試案例 ### 範例輸入輸出 ``` Input: s = "lEetcOde" Output: "lEOtcede" Explanation: 母音 'E', 'e', 'O', 'e' 排序後變成 'E', 'O', 'e', 'e' ``` ### 邊界情況 - `1 <= s.length <= 10^5` - `s` consists only of letters of the English alphabet in uppercase and lowercase. ## 學習筆記 ### 今天學到什麼? - ### 遇到的困難 - ### 改善方向 - ### 相關題目 - [題目編號] 題目名稱 - 相似概念 - [題目編號] 題目名稱 - 進階版本 --- **總結**: 這題的核心概念是...,適合練習...技巧。