字符串排序
题目描述
题目地址:http://mtw.so/64Rbvv
题目要求:
编写一个程序,将输入字符串中的字符按如下规则排序。
规则 1 :英文字母从 A 到 Z 排列,不区分大小写。
规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。
规则 3 :非英文字母的其它字符保持原来的位置。
解题思路
- 做这类题,首先我们得知道大写字母A-Z的
ASCII码
为65-90
,小写字母a-z的ASCII码
为97-122
- 了解
charCodeAt()
方法可返回指定位置的字符的 Unicode 编码,返回值是 0 - 65535 之间的整数,表示给定索引处的 UTF-16 代码单元,字符串中第一个字符的位置为 0, 第二个字符位置为 1,以此类推。 - 对
小写字母
大写字母
特殊符号
三种情况进行判断
解题代码
while(line = readline()){
let box = [];
for(let i =0; i < 26;i++){
box[i] = "";
}
let symbol = [];
let arr = line.split("");
for(let i =0; i < arr.length;i++){
let code = arr[i].charCodeAt();
// 小写字母
if(code >= 97 && code <= 123){
box[code - 97] += arr[i];
}
// 大写字母
else if(code >= 65&& code <= 91){
box[code - 65] += arr[i];
}
// 符号
else{
symbol.push([i,arr[i]]);
}
}
let res = box.join("");
symbol.forEach(item=>{
// 字母前 + 符号 + 字母后
res = res.substring(0,item[0]) + item[1] + res.substring(item[0]);
})
console.log(res);
}