题解 | #字符串排序#

字符串排序

http://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584

**直接对输入的字符串进行排序,排序后,使用map记住符号的位置,然后提取出字母保存到变量。提取原始字符串里面所有字母相同的字符(筛选的时候不区分大小写,存储时需要区分)。然后遍历刚才存储的字母,直接替换到刚才排序好的字母中。最后将存储的符号安装位置插入到排序好的字母中 ,便得到结果 **

let line = readline();
let itemIndex = new Map();
let reg = /[^a-z]/gi;
while (reg.test(line)) {
  itemIndex.set(reg.lastIndex - 1, line[reg.lastIndex - 1]);
}
let sortLine = line.toLowerCase().split("").sort().join("");
let tmp = sortLine.split(/[^a-z]/g).join("");
let sameLetter = {};
let line2 = line.match(/[a-z]/gi).join("");
for (let index = 0; index < line2.length; index++) {
  let e = line2[index];
  sameLetter[e.toLowerCase()] = (sameLetter[e.toLowerCase()] || "") + e;
}
Object.values(sameLetter).forEach((e) => {
  tmp = tmp.replace(e.toLowerCase(), e);
});

tmp = tmp.split("");
for (let [k, v] of itemIndex.entries()) {
  tmp.splice(k, 0, v);
}
console.log(tmp.join(""));


全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务