字符串排序

348 阅读1分钟

描述

编写一个程序,将输入字符串中的字符按如下规则排序。

规则 1 :英文字母从 A 到 Z 排列,不区分大小写。

如,输入: Type 输出: epTy

规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。

如,输入: BabA 输出: aABb

规则 3 :非英文字母的其它字符保持原来的位置。
\

如,输入: By?e 输出: Be?y

\

数据范围:输入的字符串长度满足 1 \le n \le 1000 \1≤n≤1000 \

输入描述:

输入字符串

输出描述:

输出字符串

示例1

输入:

A Famous Saying: Much Ado About Nothing (2012/8).

输出:

A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).
function sortStr(str){
    if(!str || str.length>100 || str.length<1){
        console.log("请输入合格字符串")
        return
    }
    let arr = str.split("")
    let box = []
    for(let i = 0; i < 26; i++){
        box[i] = ""
    }
    let symbols = []
    //这个就是单个字符串和空格的数组
    arr.map((code,idx)=>{
            if(code.charCodeAt()>=97 && code.charCodeAt()<123){
                //说明是小写字母
                box[code.charCodeAt() - 97] += code
            }else if(code.charCodeAt()>=65 && code.charCodeAt()<97){
                //说明是大写字母
                 box[code.charCodeAt() - 65] += code
            }else{
                //说明是特殊字符
                symbols.push([idx,code])
            }

    })
    //删除box中的""
    let resStr = ""
    box.map((item)=>{
        resStr += item
    })
    symbols.map((item)=>{
        //在指定位置上添加了特殊字符(字符串前半截加上特殊字符加上字符串后半截)
        resStr = resStr.slice(0,item[0]) + item[1] + resStr.slice(item[0])
    })
    //在指定位置添加上空格
    console.log(resStr)  
}
sortStr()