当前位置: 首页 > news >正文

牛客网之华为机试题:HJ26 字符串排序

一. 简介

本文记录牛客网上华为机试题: 字符串排序

本题目主要考察字符串排序。

二. 牛客网之华为机试题:HJ26 字符串排序

描述

对于给定的由可见字符和空格组成的字符串,按照下方的规则进行排序:
∙ ∙按照字母表中的顺序排序(不区分大小写);
∙ ∙同一字母的大小写同时存在时,按照输入顺序排列;
∙ ∙非字母字符保持原来的位置不参与排序;
直接输出排序后的字符串。
字符串由 ASCII 码在 3232 到 126126 范围内的字符组成。您可以参阅下表获得其详细信息。

../图片/可见字符集Ascii.png

输入描述:

在一行上输入一个长度为 1≦length(s)≦1000,由上表中的字符组成的字符串 s 。

输出描述:

输出一个字符串,代表按照规则排序后的字符串。

示例1

输入:BabA

输出:aABb

示例2

输入:Hello NowCoder!

输出:deeH llNooorw!

解题思路如下:

1. 首先,获取一行字符串

2. 其次,从字符串中提取字母,提取到一个新数组中,按照如下规则排序:

       按照字母顺序排序;

       如果有大小写不同的(相同)字母,则按照输入顺序;

3. 最后,遍历输入数组,查找到原来字母位置,用新数组中元素进行替换;

同时,输出结果;

C语言实现如下:

#include <stdio.h>
#include <string.h>int main() {char input[1001] = {0};char character[1001] = {0};int  j, m;int k = 0;//1. 读取一行字符串//gets函数遇到\n或文件结束符EOF为止//gets()会将\n替换为\0(即buf末尾会添加\0)while(gets(input) != NULL) {//2. 按照字母顺序排序,从字符串中提取出来//不区分字母大小写(即按照大小字母出现的先后顺序)for(char c='A'; c<='Z'; c++) {for(j=0; j<strlen(input); j++) {if((input[j]==c)||((input[j]-32==c) && (input[j]>='a'&&input[j]<='z'))) {character[k++] = input[j];}}}//3. 替换掉原来的字母位置//最后,输出结果k = 0;for(m=0; m<strlen(input); m++) {if((input[m]>='a' && input[m]<='z')||(input[m]>='A' && input[m]<='Z')) {input[m] = character[k++];}printf("%c", input[m]);}}return 0;
}

http://www.lryc.cn/news/609698.html

相关文章:

  • 直角坐标系里的四象限对NLP中的深层语义分析的积极影响和启示
  • debian 时间同步 设置ntp服务端 客户端
  • Petalinux驱动开发
  • Redis 常用数据结构以及单线程模型
  • Apache Camel 中 ProducerTemplate
  • 哪些第三方 Crate 可以直接用?
  • 深入解析 Apache Tomcat 配置文件
  • RK Android14 新建分区恢复出厂设置分区数据不擦除及开机动画自定义(一)
  • PHP-分支语句、while循环、for循环
  • Android 分析底电流高即功耗大的几个方面
  • 开疆智能ModbusTCP转Profient网关连接ER机器人配置案例
  • LeetCode 140:单词拆分 II
  • 机械设备制造企业:大型设备采购流程与注意事项
  • 百度翻译详解:包括PaddleNLP、百度AI开放平台、接口逆向(包括完整代码)
  • 晨控CK-GW08S与汇川AC系列PLC配置Ethernet/IP通讯连接手册
  • 【学习笔记】Manipulate-Anything(基于视觉-语言模型的机器人自动化操控系统)
  • Spark SQL:用SQL玩转大数据
  • ROS2机器人编程新书推荐-2025-精通ROS 2机器人编程:使用ROS 2进行复杂机器人的设计、构建、仿真与原型开发(第四版)
  • 力扣热题100——滑动窗口
  • Axure日期日历高保真动态交互原型
  • MySQL 约束知识体系:八大约束类型详细讲解
  • Java项目:基于SSM框架实现的电子病历管理系统【ssm+B/S架构+源码+数据库+毕业论文+远程部署】
  • Android 15.0 启动app时设置密码锁
  • 安卓264和265编码器回调编码数据写入文件的方法
  • Android进程基础:Zygote
  • 2025-08-04-零成本搭建 AI 应用!Hugging Face 免费 CPU 资源实战指南
  • Android Telephony 框架与横向支撑层
  • 如何选择一个容易被搜索引擎发现的域名?
  • 计算机网络:详解网络地址的计算步骤
  • 2.4- WPF中非 UI 线程上安全地更新 UI 控件方法