【华为机试刷题笔记】HJ26-字符串排序

2023-10-30

图片来源网络,详细信息不详,仅供欣赏呦

题目描述

编写一个程序,将输入字符串中的字符按如下规则排序。
规则 1 :英文字母从 A 到 Z 排列,不区分大小写。
如,输入: Type 输出: epTy
规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。
如,输入: BabA 输出: aABb
规则 3 :非英文字母的其它字符保持原来的位置。
如,输入: By?e 输出: Be?y
数据范围:输入的字符串长度满足 1 ≤ n ≤ 1000 1 \leq n \leq 1000 1n1000
输入描述:输入字符串
输出描述:输出字符串

示例1

输入:A Famous Saying: Much Ado About Nothing (2012/8).
输出:A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).

题解

下面展示本人题解思路代码。

/* 
charCodeAt() 方法可返回指定位置的字符的 Unicode 编码,返回值是 0 - 65535 之间的整数,表示给定索引处的 UTF-16 代码单元。字符串中第一个字符的位置为 0, 第二个字符位置为 1,以此类推。
splice() 方法用于添加或删除数组中的元素。注意:这种方法会改变原始数组。返回值:如果删除一个元素,则返回一个元素的数组。 如果未删除任何元素,则返回空数组。
  splice(index,howmany,item1, ..., itemX	)
    index	必需。规定从何处添加/删除元素。该参数是开始插入和(或)删除的数组元素的下标,必须是数字。
    howmany	可选。规定应该删除多少元素。必须是数字,但可以是 "0"。如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
    item1, ..., itemX	可选。要添加到数组的新元素
*/
const rl = require("readline").createInterface({ input: process.stdin })
iter = rl[Symbol.asyncIterator]()
const readline = async () => (await iter.next()).value

void async function () {
  let str = await readline()
  let arr = str.split('')
  let result = []
  //遍历原数组筛选出a-zA-Z之间的英文字母并存储到数组result中
  for (let i = 0; i < 26; i++) {
    for (let j = 0; j < arr.length; j++) {
      if (arr[j].charCodeAt(0) == (65 + i) || arr[j].charCodeAt(0) == (97 + i)) {
        result.push(arr[j])
      }
    }
  }
  //遍历原数组筛选出非英文字母并插入到数组result中
  for (let i = 0; i < arr.length; i++) {
    if (!/[A-Za-z]/g.test(arr[i])) {
      result.splice(i, 0, arr[i])
    }
  }
  console.log(result.join(''))
}()

文章系原创,在阅读过程中如若有误,劳请指正;如若有妙解、疑惑也欢迎大家和我交流,感谢!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【华为机试刷题笔记】HJ26-字符串排序 的相关文章

  • 如何正确清理来自 AngularJS 控制器的无效输入的表单?

    我有一个 AngularJS 表单 其中包含 除其他字段之外 类型之一url 后者很重要 因为这会强制相应的输入成为有效的 URL 在某些条件下 例如 要关闭具有此类表单的模式对话框 我想以编程方式清除该表单 为此 我实现了方法reset基
  • 如何使用有角度的材料创建卡片网格?

    我正在尝试使用 ng repeat 创建每行三张卡片的网格 我有一个普通的 javascript 对象数组附加到范围 下面的代码将为每张卡创建一个新行 div div
  • 为什么 window 与 Internet Explorer 中的 window.self 不同?

    关于我如何遇到这个问题有一个复杂的背景故事 但为什么self属性不完全等于窗口本身 在 Safari 和 Firefox 及其朋友中 结果如我所料 gt window window self true gt window window se
  • Cloud Functions for Firebase - 通过 Nodejs/Cloud Function 将多个 PDF 合并为一个

    我遇到了一个问题 我试图通过云功能合并一堆 PDF 然后将合并的 PDF 下载到用户的计算机上 我的提供程序中有一个函数 它调用云函数并传递指向 pdf 的 URL 数组 如下所示 mergePDFs pdfs Create array o
  • 本地推送通知到在应用程序内运行 JS 代码的 Win8 Live Tile

    我正在尝试将更新发送到我的应用程序的磁贴 当应用程序运行时 这可以正常工作 例如 当用户单击按钮时 我可以轻松地将磁贴更新通知发送到磁贴 我无法解决的是当应用程序无法运行时如何更新磁贴 我找到的唯一选择是使用以下命令从远程 Web 服务器拉
  • JavaScript 验证和 PHP 验证?

    我正在使用 jquery 验证插件来验证空表单 我还应该在 PHP 中检查一下以确保 100 正确吗 或者用 javascript 验证就可以了 谢谢 您应该始终在服务器上进行验证 如果用户以某种方式不使用 Javascript 提交表单
  • 如何通过单击链接来更改 div 的内容?

    这是我的网页的 修改后的 jsfiddle 它还有很多 而且定位是正确的 与此相反 http jsfiddle net ry0tec3p 1 http jsfiddle net ry0tec3p 1 a href class btn1 st
  • JavaScript 中的 Promise 有什么意义?

    一个承诺是一个 可能现在可用 或将来可用 或永远不可用的值 来源 MDN 假设我有一个想要处理图片的应用程序 图片已加载 例如在算法在后台使用它之后 或某种其他类型的延迟 现在我想检查一下图片是否可以在future 通过使用承诺 而不是回调
  • 如何使用 Javascript 设置查询字符串

    有没有办法使用 javascript 设置查询字符串的值 我的页面有一个过滤器列表 单击该列表时 它将更改右侧的页内结果窗格 我正在尝试更新 url 的查询字符串值 因此如果用户离开页面 然后单击 后退 按钮 他们将返回到最后一个过滤器选择
  • Mongoose 独特的验证不起作用。保存重复条目

    我正在开发一个 NodeJS 应用程序 其中express是框架 MongoDB是数据库 我正在使用猫鼬插件 我有一个父母模型 我已经添加了独特 真实到场 mobile 但是每当我添加相同的手机号码时 唯一性验证就会失败 除了保存重复的文档
  • 改变 JavaScript 中的顶部填充

    以下是我在 css 中设置顶部填充的方法 body font size font size px margin 0 padding 100px 0 20px 0 width 100 important 如何使用最简单的 javascript
  • LeafleteachLayer函数不会迭代所有Layer

    使用 GeoJSON 数据数组创建一些标记 getJSON GetLocationsServlet function data L geoJSON data onEachFeature onEachFeature addTo mymap G
  • Node.js 中的异步或步骤

    我无法让我的异步代码与 node js 一起使用 尝试异步和步骤库 代码仅返回第一个函数 似乎没有执行其余函数 我究竟做错了什么 thanks var step require step step function f1 console l
  • 表单发布请求并存储收到的数据

    我有一个非常简单的表单 在提交时发出发布请求
  • 聆听 Angular 2 中的元素可见性

    我正在为我的网络应用程序使用 Bootstrap 和 Angular 2 v4 我想监听指令中的元素以了解可见性变化 我的元素有一个可以隐藏其子元素的父元素hidden sm up我需要在每次隐藏或显示时触发一个函数 div hidden
  • 使用javascript动态更新css内容

    需要将 css 更新为动态值 我不确定最好的方法是什么 div style zoom 1 div 缩放级别将根据窗口大小调整触发 应用程序将相应缩放 我将此应用程序加载到 cordova 中并让它在 iPAD 中运行 然后我意识到需要使用
  • $resource.query 返回分割字符串(字符数组)而不是字符串

    我正在使用像下面这样的 Angular resource angular module app factory data function resource var Con resource api data update method P
  • 在 iOS 7 Safari 中,如何区分通过边缘滑动与后退/前进按钮的 popstate 事件?

    在 iOS 7 Safari 中 现在有两种后退 前进导航方式 使用底部的传统后退 前进按钮箭头或从屏幕边缘滑动 我正在使用动画在 ajax 应用程序中的页面之间进行转换 但如果用户通过边缘滑动进行导航 我不想触发该转换 因为这本身就是一个
  • "message": "ENOENT: 没有这样的文件或目录,打开 'E:\\astrology\\utils\\uploads\\1600798534862qf.png'"

    正如标题所示 我得到error message ENOENT no such file or directory open E astrology utils uploads 1600798534862qf png 在我的项目中 即使在通过
  • 测量窗口偏移

    有没有一种方法可以测量 jQuery 中窗口的偏移量 以便我可以比较 固定 元素和相对定位元素的位置 我需要能够知道窗口滚动了多远 以便我可以使用该图来计算固定元素的高度 相对于视口顶部 和相对对象的高度 相对于顶部 之间的差异文件的内容

随机推荐

  • Python file"文件"常用方法(三):读+写+刷新-write()、writelines()、read()、readline()、readlines()、flush()

    一 write 方法 将字符串写入文件 返回的是写入的字符长度 write 方法可将任何字符串写入一个打开的文件 需要重点注意的是 Python字符串可以是二进制数据 而不是仅仅是文字 在文件关闭前或缓冲区刷新前 字符串内容存储在缓冲区中
  • Anaconda3 环境下安装Open3D(自学笔记)

    介绍 Open3D是一个开源库 支持快速开发处理3D数据的软件 Open3D的核心功能包括 3D数据结构 3D数据处理算法 场景重建 表面对齐 3D可视化 基于物理的渲染 PBR 支持PyTorch TensorFlow 支持GPU加速处理
  • Docker安装JDK(二)

    安装的两种方式 通过已有的镜像直接pull安装 自己通过dockerfile等命令打包一个镜像安装 此种方式我们到已有镜像满足不了自身需求时使用 本章是根据第一种方式安装的 根据文章docker安装指定版本的tag镜像得到安装JDK的Doc
  • verilog 学习笔记 —— 时序逻辑 Sequential Logics (Latches and Flip-Flops 锁存器和触发器)

    1 D flip flop D触发器 module top module input clk Clocks are used in sequential circuits input d output reg q Use a clocked
  • 轻松学会Java导出word,一篇文章就够了!

    很多小伙伴在工作中 可能又这样一个需求 根据word模板去填充数据 变成我们想要的word文档 这是很多刚进入职场的小白都会碰到的需求 当遇上这种需求 我们可以通过这篇文章要讲的poi tl 来做处理 导入依赖
  • Centos7 安装部署Kubernetes(k8s)集群过程

    1 系统环境 服务器版本 docker软件版本 CPU架构 CentOS Linux release 7 9 Docker version 20 10 12 x86 64 2 前言 如下图描述了软件部署方式的变迁 传统部署时代 虚拟化部署时
  • 用Node.js搭建一个简单Web服务器

    Node js是基于Chrome V8引擎的JavaScript运行时环境 它允许我们在服务器端运行JavaScript代码 这让我们可以用JavaScript构建Web服务器 处理请求和响应 我们一起探索了如何用Node js搭建一个简单
  • 数据结构——链表课后习题解答

    学习完链表 做了一遍题 码完代码 能跑的都跑了一遍 检验了一下 答案若有错误 欢迎指出 感谢 以下是题目和答案 以下题目若没有指出 全是用单向链表 目录 1 逆序一个链表 2 如何判断一个链表是否有环 3 求链表的中间节点 要求只用一重循环
  • 【speech&nlp】如何实现总体数据按照长短排序,同样长度数据随机排序

    在做speech nlp任务时 经常有这样一个需求 假设有一个数据集 有1000条数据 但是只有100种长度 所以必然存在某些数据是一样长的 我们想要让总体按照长短排序 但是同样长的数据要随机排序 经过了这个操作 再分batch 这样的效果
  • jmeter做接口压力测试_jmeter接口性能测试

    jmeter是apache公司基于java开发的一款开源压力测试工具 体积小 功能全 使用方便 是一个比较轻量级的测试工具 使用起来非常简单 因为jmeter是java开发的 所以运行的时候必须先要安装jdk才可以 jmeter是免安装的
  • 解决vscode找不到Python自定义模块,报错No module named ‘xxx‘

    笔者最近在学习python过程中 把在pycharm运行成功的项目放在vscode中 发现一些报错 比如找不到笔者自定义的模块 参考了一些说法与办法 现将解决方法记录于此 前言 vscode之所以找不到自定义模块 与其PYTHONPATH有
  • 将yolov5检测结果保存成json文件

    将yolov5检测结果保存成json文件 每帧图片对应一个json文件 json文件中包含图片名称 检测到的bbox信息 分类结果 中心坐标和置信度 函数json add以图片名 该图像内的所有bbox信息 以及bbox数量为输入 在yol
  • PCB画板(Altium Designer)

    b站学习视频 1 https www bilibili com video BV1ei4y1L7TU spm id from 333 999 0 0 这力荐 2 https www bilibili com video BV1tE411g7
  • 判断多边形凹凸

    任意给定一个多边形 判断它是凸还是凹 多边形的顶点以逆时针方向的序列来表示 include
  • 关于小程序中如何获取openid

    想要获取用户的openid首先要明白获取的过程 1 登录 2 发请求获取openid 实现 先定义一组数据 后面发请求获取openid时要的参数 一个是appid 一个是secret秘钥 这两个在注册开发者平台后可以查到 如下 global
  • 【Vulnhub系列】DC1

    文章目录 基本信息 实验过程 额外内容 使用CVE2014 3704添加管理账号 另一种查询具有root权限命令的find语句 下载地址 https www vulnhub com entry dc 1 1 292 基本信息 Kali 19
  • Counterfactual Zero-Shot and Open-Set Visual Recognition

    Counterfactual Zero Shot and Open Set Visual Recognition 1 Introduction 文献提出一个反事实框架 是由对不可见类的泛化来支撑的 作者基于反事实的一致性规则 反事实确实是基
  • C++同步技术——Mutex相关 (转)

    进程的互斥运行 正常情况下 一个进程的运行一般是不会影响到其他正在运行的进程的 但是对于某些有特殊要求的如以独占方式使用串行口等硬件设备的程序就要求在其进程运行期间不允许其他试图使用此端口设备的程序运行的 而且此类程序通常也不允许运行同一个
  • 大数据技术面试-Flume、kafka

    大数据技术面试 Flume kafka 1 Flume组成有哪些 2 Flume拦截器有哪些知识点 3 Flume采集数据会丢失吗 4 FileChannel如何优化 5 如何控制Kafka丢不丢数据 6 Kafka分区分配策略默认哪两种
  • 【华为机试刷题笔记】HJ26-字符串排序

    题目描述 编写一个程序 将输入字符串中的字符按如下规则排序 规则 1 英文字母从 A 到 Z 排列 不区分大小写 如 输入 Type 输出 epTy 规则 2 同一个英文字母的大小写同时存在时 按照输入顺序排列 如 输入 BabA 输出 a