将字符串中的元音字母排序

给你一个下标从 0 开始的字符串 s ,将 s 中的元素重新 排列 得到新的字符串 t ,它满足:
所有辅音字母都在原来的位置上。更正式的,如果满足 0 <= i < s.length 的下标 i 处的 s[i] 是个辅音字母,那么 t[i] = s[i] 。
元音字母都必须以他们的 ASCII 值按 非递减 顺序排列。更正式的,对于满足 0 <= i < j < s.length 的下标 i 和 j ,如果 s[i] 和 s[j] 都是元音字母,那么 t[i] 的 ASCII 值不能大于 t[j] 的 ASCII 值。
请你返回结果字母串。
元音字母为 ‘a’ ,’e’ ,’i’ ,’o’ 和 ‘u’ ,它们可能是小写字母也可能是大写字母,辅音字母是除了这 5 个字母以外的所有字母。

  • 输入:s = “lEetcOde”
  • 输出:”lEOtcede”
    解释:’E’ ,’O’ 和 ‘e’ 是 s 中的元音字母,’l’ ,’t’ ,’c’ 和 ‘d’ 是所有的辅音。将元音字母按照 ASCII 值排序,辅音字母留在原地。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var sortVowels = function(s) {
//将s中的元素重排,辅音字母位置不变,对元音字母进行排序
let target = 'aeiouAEIOU';
let arr= []
let col = []
let j = 0
for(let i =0; i< s.length;i++){
if(target.indexOf(s[i]) > -1){
arr[j] = s[i]
col[j] = i
++j
}
}
//把所有需要排序的字符和索引摘出来

finalArr = arr.sort() //对字符进行排序
let temStr = s.split('') //把原字符串拆成数组
for(let i = 0;i<col.length;i++){
temStr[col[i]] = finalArr[i] //按顺序进行重新赋值
}
return temStr.join('')
};