对输入的单词进行字典序排序输出: 字典序定义

  1. 单词中字母比较不区分大小写,两个单词先以第一个字母作为排序的基准,如果第一个字母相同, 就用第二个字母为基准,如果第二个字母相同就以第三个字母为基准。依此类推,如果到某个字母不相同,字母顺序在前的那个单词顺序在前。
  2. 当一个短单词和一个长单词的开头部分都相同(即短单词是长单词从首字母开始的一部分),短单词顺序在前。
  3. 字母大小写不同的相同单词,只输出一次。

输入描述:

不超过255个字符中,单词间用空格进行分隔,为简单起见,单词不包含连字符,无其它标点符号输出描述:

输出排序后的单词,单词之间用空格隔开(最后不带空格),重复的单词只输出一次。 示例1 输入 Hello hello world 输出 Hello world 升序排序

let list = ['Hello','hello','world']
    //升序 o1 > o2 return 1 ; 降序 o1 > o2 return -1 ; 相等 return 0
    function compare(o1,o2) {
        let char1 = o1.split('');
        let char2 = o2.split('');
        let length = char1.length < char2.length ? char1.length : char2.length;
        let charNum1 = 0
        let charNum2 = 0
        for(let i=0; i< length; i++) {
            let a = char1[i] > 'a' ? char1[i] : char1[i].toLowerCase();
            let b = char2[i] > 'a' ? char2[i] : char2[i].toLowerCase();
            if(a < b) {
                charNum2++
            }else if(a > b) {
                charNum1++
            }
        }
        return charNum1 -charNum2
    }
list.sort(compare)
// 去重
let resultList = []
for(let i of list){
    let findResult = resultList.findIndex(e=>e.toLowerCase()===i.toLowerCase())
    if(findResult<0){
        resultList.push(i)
    }
}
console.log(resultList.join(' '));