字符串排序
题目描述
题目地址: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);
}
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号