Lao乾妈官方认证唯一女友:D 2023-01-26 14:08 采纳率: 85.7%
浏览 30

牛客网机试题HJ26 字符串排序

编写一个程序,将输入字符串中的字符按如下规则排序。
规则 1 :英文字母从 A 到 Z 排列,不区分大小写。
如,输入: Type 输出: epTy
规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。
如,输入: BabA 输出: aABb
规则 3 :非英文字母的其它字符保持原来的位置。
如,输入: By?e 输出: Be?y
我运行出来同一个英文字母的大小写同时存在时,只有第一个没有转换顺序,后三个还是转换顺序了,怎么改?

img


const readline = require("readline");
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});
let arr = [];
rl.on("line", (line) => {
    arr = line.split("");
    // console.log(arr) ['A', ' ', 'F', 'a', 'm', 'o', 'u', 's',' ', 'S', 'a', 'y', 'i', 'n', 'g',':',' ', 'M', 'u', 'c', 'h', ' ', 'A', 'd','o', ' ', 'A', 'b', 'o', 'u', 't', ' ','N', 'o', 't', 'h', 'i', 'n', 'g', ' ','(', '2', '0', '1', '2', '/', '8', ')','.']
//类似于冒泡排序
    for (let i = 0; i < arr.length; i++) {
        for (let j = i + 1; j < arr.length; j++)
           // 当两个字母都是大写或者都是小写时,比较ASCII码值
            if (
                (/[A-Z]/.test(arr[i]) && /[A-Z]/.test(arr[j])) ||
                (/[a-z]/.test(arr[i]) && /[a-z]/.test(arr[j]))
            ) {
                if (arr[i].charCodeAt() > arr[j].charCodeAt()) {
                    let temp = "";
                    temp = arr[j];
                    arr[j] = arr[i];
                    arr[i] = temp;
                }//当2个字母一大一小时
            } else if (/[A-Z]/.test(arr[i]) && /[a-z]/.test(arr[j]) || /[a-z]/.test(arr[i]) && /[A-Z]/.test(arr[j])) {
           //我的想法是当第i个元素的小写ASCII码值大于第j个的时,才调换顺序,但是运行出来只有第一个大小写的没有转换顺序
                if(arr[i].toLowerCase().charCodeAt() > arr[j].toLowerCase().charCodeAt()){
                    let temp = "";
                    temp = arr[j];
                    arr[j] = arr[i];
                    arr[i] = temp;
                    }
            }
    }
    console.log(arr.join(''))
});

机试题对应链接:
https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584?tpId=37&tqId=21249&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3Fpage%3D1%26pageSize%3D50%26search%3D%25E6%258E%2592%25E5%25BA%258F%26tpId%3D37%26type%3D37&difficulty=undefined&judgeStatus=undefined&tags=&title=%E6%8E%92%E5%BA%8F

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-01-26 16:51
    关注
    评论

报告相同问题?

问题事件

  • 创建了问题 1月26日

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?