diff options
author | Jack Sangdahl <[email protected]> | 2025-09-10 21:55:44 -0600 |
---|---|---|
committer | Jack Sangdahl <[email protected]> | 2025-09-10 21:55:44 -0600 |
commit | 2769f3100712f1dc4f8c27181fc2c1f98fc3352c (patch) | |
tree | 4789073705acb0e2c8f5d2474d82d83adbcde13c /sort_vowel_string.py | |
parent | a675ae1a71ab3e88196a2a72a62f2c7a0d4c596a (diff) | |
download | leetcode-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.py | 41 |
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__": |