From 2769f3100712f1dc4f8c27181fc2c1f98fc3352c Mon Sep 17 00:00:00 2001 From: Jack Sangdahl Date: Wed, 10 Sep 2025 21:55:44 -0600 Subject: 2785. sort vowels in a string --- sort_vowel_string.py | 41 +++++++++++++++++------------------------ 1 file changed, 17 insertions(+), 24 deletions(-) (limited to 'sort_vowel_string.py') 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__": -- cgit v1.2.3