aboutsummaryrefslogtreecommitdiff
path: root/sort_vowel_string.py
diff options
context:
space:
mode:
authorJack Sangdahl <[email protected]>2025-09-10 21:55:44 -0600
committerJack Sangdahl <[email protected]>2025-09-10 21:55:44 -0600
commit2769f3100712f1dc4f8c27181fc2c1f98fc3352c (patch)
tree4789073705acb0e2c8f5d2474d82d83adbcde13c /sort_vowel_string.py
parenta675ae1a71ab3e88196a2a72a62f2c7a0d4c596a (diff)
downloadleetcode-2769f3100712f1dc4f8c27181fc2c1f98fc3352c.tar.gz
leetcode-2769f3100712f1dc4f8c27181fc2c1f98fc3352c.zip
2785. sort vowels in a string
Diffstat (limited to 'sort_vowel_string.py')
-rw-r--r--sort_vowel_string.py41
1 files changed, 17 insertions, 24 deletions
diff --git a/sort_vowel_string.py b/sort_vowel_string.py
index b0cce99..6ffdfee 100644
--- a/sort_vowel_string.py
+++ b/sort_vowel_string.py
@@ -1,16 +1,16 @@
# 2785. Sort Vowels in a String
"""
- given a 0-indexed string 's', permute 's' to get a new string 't'.
- - All consonants remain in their original places. More formally, if there is
- an index i with 0 <= i < s.length such that s[i] is a consonant, then t[i] =
- s[i].
- - The vowels must be sorted in the nondecreasing order of their ASCII
- values. More formally, for pairs of indices i, j with 0 <= i < j < s.length
- such that s[i] and s[j] are vowels, then t[i] must not have a higher ASCII
- value than t[j].
- return the resulting string. consonants comprise all letter that are not
- vowels.
+ given a 0-indexed string 's', permute 's' to get a new string 't'.
+ - All consonants remain in their original places. More formally, if there is
+an index i with 0 <= i < s.length such that s[i] is a consonant, then t[i] =
+s[i].
+- The vowels must be sorted in the nondecreasing order of their ASCII
+values. More formally, for pairs of indices i, j with 0 <= i < j < s.length
+such that s[i] and s[j] are vowels, then t[i] must not have a higher ASCII
+value than t[j].
+ return the resulting string. consonants comprise all letter that are not
+vowels.
"""
@@ -20,20 +20,13 @@ class Solution(object):
:type s: str
:rtype: str
"""
- vowel = [97, 101, 105, 111, 117, 65, 69, 73, 79, 85]
- s = list(s)
- lis = []
- idx = []
- for i in range(len(s)):
- if ord(s[i]) in vowel:
- lis.append(ord(s[i]))
- idx.append(i)
- lis.sort()
- if len(lis) < 2:
- return "".join(s)
- for i in range(len(idx)):
- s[idx[i]] = chr(lis[i])
- return "".join(s)
+ vowel_map = set("AEIOUaeiou")
+ vowels = [i for i in s if i in vowel_map]
+ vowels.sort()
+ ans, i = [], iter(vowels)
+ for j in s:
+ ans.append(next(i) if j in vowel_map else j)
+ return "".join(ans)
if __name__ == "__main__":