字符串排序

题目描述

题目地址:http://mtw.so/64Rbvv
题目要求:

编写一个程序,将输入字符串中的字符按如下规则排序。
规则 1 :英文字母从 A 到 Z 排列,不区分大小写。
规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。
规则 3 :非英文字母的其它字符保持原来的位置。

解题思路

  1. 做这类题,首先我们得知道大写字母A-Z的ASCII码65-90,小写字母a-z的ASCII码97-122
  2. 了解charCodeAt() 方法可返回指定位置的字符的 Unicode 编码,返回值是 0 - 65535 之间的整数,表示给定索引处的 UTF-16 代码单元,字符串中第一个字符的位置为 0, 第二个字符位置为 1,以此类推。
  3. 小写字母 大写字母 特殊符号三种情况进行判断

解题代码

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);
}




posted @ 2022-07-29 22:53  fionna  阅读(144)  评论(0编辑  收藏  举报