首页 > 编程语言 >牛客[编程题] HJ26 字符串排序

牛客[编程题] HJ26 字符串排序

时间:2023-11-09 10:24:14浏览次数:36  
标签:输出 编程 List 牛客 HJ26 字符串 new line 输入

HJ26 字符串排序  

  •  
中等  通过率:39.52%  时间限制:1秒  空间限制:32M  

描述

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

规则 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).

 

using System.Collections.Generic;
using System;
public class Program {
    public static void Main() {
        string line;
        while ((line = System.Console.ReadLine ()) !=
                null) { // 注意 while 处理多个 case
            List<int> abc = new List<int>();
            List<int> others = new List<int>();
            char[] res = new char[line.Length];
            char c;
            for (int i = 0; i < line.Length; i++) {
                c = line[i];
                if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'))
                    abc.Add(i);
                else {

                    others.Add(i);
                    res[i] = line[i];
                }
            }
            List<char> chars = new List<char>();
            for (int i = 0; i <= 'Z' - 'A'; i++) {
                for (int j = 0; j < abc.Count; j++) {
                    c = line[abc[j]];
                    if (c == 'A' + i || c == 'a' + i)
                        chars.Add(c);
                }

            }
            for (int i = 0; i < chars.Count; i++) {
                res[abc[i]] = chars[i];
            }
            for (int i = 0; i < res.Length; i++) {
                Console.Write(res[i]);
            }

        }
    }
}

 

标签:输出,编程,List,牛客,HJ26,字符串,new,line,输入
From: https://www.cnblogs.com/zhangdezhang/p/17819088.html

相关文章

  • Python实验:Socket编程
    实验六Socket编程一、实验目标:了解TCP协议原理、标准库socket的用法、熟悉Socket编程。1.TCP协议原理:TCP(TransmissionControlProtocol,传输控制协议)是一种面向连接的、可靠的、基于流的协议,用于在计算机网络中传输数据。它是互联网协议套件中的一部分,通常与IP(Internet......
  • 编程冷知识
    编程冷知识qt中只修改宏,不修改其它东西,编译运行还会时原先的结果,必须手动强制重新编译。c++中ostream删除了拷贝构造和复制构造,是为了避免两个ostream同时向一个输出流输出数据。如果想使用std::cout将内容输出到终端,可以写成ostream&os=std::cout;如果想将信息记录到文......
  • 牛客[编程题] HJ25 数据分类处理
     描述信息社会,有海量的数据需要分析处理,比如公安局分析身份证号码、 QQ 用户、手机号码、银行帐号等信息及活动记录。采集输入大数据和分类规则,通过大数据分类处理程序,将大数据分类输出。  数据范围:1\leI,R\le100\1≤I,R≤100  ,输入的整数大小满足 0\lev......
  • 牛客[编程题]坐标移动
     https://www.nowcoder.com/questionTerminal/119bcca3befb405fbe58abe9c532eb29publicclassProgram{publicstaticvoidMain(){stringline;while((line=System.Console.ReadLine())!=null){//注意while处理多个casestr......
  • 2008计算机软件基础 - 编程题 - 参考源程序
    2008计算机软件基础-编程题-参考源程序注:此程序仅供参考,不是唯一的标准答案,若有异议,请提出来 1typedefstructshangpin2{3intno;4charname[100];5intcount;6intprice;7}SP;89voidinsert(SPg[],int*length,SPx)10{11......
  • shell编程-流程控制
    拓展basename&dirnamebasename命令basename是去除目录后剩下的名字,取文件名例: [root@linux-server~]#temp=/home/temp/1.test[root@linux-server~]#base=`basename$temp`[root@linux-server~]#echo$base1.testdirname是获取目录名 例:[root@linux-server......
  • Windows编程之文件映射
    一、文件映射概述内存映射文件:文件映射可以用于将磁盘上的文件映射到内存中。这样,文件的内容可以直接从内存中读取或写入,而不必通过磁盘I/O进行数据交换。这对于处理大型文件或需要频繁读写的文件非常有用,可以提高性能。进程间通信:文件映射也可用于进程间通信(IPC),允许不同进......
  • 《Unix/Linux系统编程》教材学习笔记第六章
    chapter6信号和中断“中断”是从I/O设备或协处理器发送到CPU的外部请求,它将CPU从正常执行转移到中断处理。与发送给CPU的中断请求一样,“信号”是发送给进程的请求,将进程从正常执行转移到中断处理。在讨论信号和信号处理之前,先来回顾中断的概念和机制,这有助于正确看待信号。(1)首......
  • 生物信息专业都学些什么编程语言?
    以前上课学的C/C++/Java/C#/汇编。自学的perl/python/matlab/R/等等。其实用什么语言搞科研主要看老板,我最初老板和组里其他人都用perl,我也学perl。这样方便大家交换程序。现在的老板用python,我就开始学python了。其实觉得bioinformatics的本科都会教c或者java,会了c/java其中任......
  • (九)C#编程基础复习——while循环
    在C#中,while循环用于多次迭代一部分程序,特别是在迭代的次数不固定的情况下,建议使用while循环而不是for循环。其中,循环主体可以是一个单独的语句,也可以是多条语句组成的代码块,当表达式的为真时,循环会一直执行下去。示例代码如下:inti=1;while(i<9){Console.Write("{0}",......