js实现字符串排序
规则:规则 1 :英文字母从 A 到 Z 排列,不区分大小写。如,输入: Type 输出: epTy规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。如,输入: BabA 输出: aABb规则 3 :非英文字母的其它字符保持原来的位置。如,输入: By?e 输出: Be?y注意有多组测试数据,即输入有多行,每一行单独处理(换行符隔开的表示不同行)while(line=readline
·
规则:
规则 1 :英文字母从 A 到 Z 排列,不区分大小写。
如,输入: Type 输出: epTy
规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。
如,输入: BabA 输出: aABb
规则 3 :非英文字母的其它字符保持原来的位置。
如,输入: By?e 输出: Be?y
注意有多组测试数据,即输入有多行,每一行单独处理(换行符隔开的表示不同行)
while(line=readline()){
//字符串切分为数组
let s=line.split("");
let box = [];
//symbols数组非字母:每一项元素是数组,由索引和索引所在的数据组成
let symbols = [];
for (let i = 0; i < 26; i++) {
box[i] = "";
}
//box数组收集26个数据:每一个数据是字母或字母大小写的组合串或空串(初始化没有值)
for (let i = 0; i < s.length; i++) {
let code = s[i].charCodeAt();
if (code >= 97 && code < 123) {//小写字母:97-122
box[code - 97] += s[i];
} else if (code >= 65 && code < 91) {//大写字母65-90
box[code - 65] += s[i];
} else {//非字母
symbols.push([i, s[i]]);
}
}
//console.log(box);
//["AaaAA", "b", "c", "d", "", "F", "gg", "hh", "ii", "", "", "", "mM",
//"nNn", "oooo", "", "", "", "sS", "tt", "uuu", "", "", "", "y", ""]
//console.log(symbols);
let res = "";
box.forEach(item => {
res += item;
})
//console.log(res); 输出 :AaaAAbcdFgghhiimMnNnoooosSttuuuy
//item[0]:特殊字符所在的索引
//item[1]:特殊字符的值
symbols.forEach(item => {
res = res.slice(0, item[0]) + item[1] + res.slice(item[0]);
})
console.log(res);
}
更多推荐
已为社区贡献1条内容
所有评论(0)