【华为OJ】【024-字符串排序】

【华为OJ】【算法总篇章】


【华为OJ】【024-字符串排序】

【工程下载】


题目描述

编写一个程序,将输入字符串中的字符按如下规则排序。
规则1:英文字母从A到Z排列,不区分大小写。如,输入:Type 输出:epTy
规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列。如,输入:BabA 输出:aABb
规则3:非英文字母的其它字符保持原来的位置。如,输入:By?e 输出:Be?y
样例:
输入:
    A Famous Saying: Much Ado About Nothing(2012/8).
输出:
    A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).

输入描述

输入字符串

输出描述

排序后的字符串

输入例子

A Famous Saying: Much Ado About Nothing (2012/8).

输出例子

A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).

算法实现

import java.util.Scanner;

/**
 * Author: 王俊超
 * Date: 2015/12/23 13:51
 * All Rights Reserved !!!
 */
public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String str = scanner.nextLine();

            // 剔除输入串中的非英文字母字符
            // 同时按输入的顺序和字母顺序串成一个字符串
            StringBuilder builder = new StringBuilder();
            for (int i = 0; i < 26; i++) {
                for (int j = 0; j < str.length(); j++) {
                    if (str.charAt(j) == (i + ‘a‘) || str.charAt(j) == (i + ‘A‘)) {
                        builder.append(str.charAt(j));
                    }
                }
            }
            StringBuilder result = new StringBuilder();
            int k = 0;
            for (int i = 0; i < str.length(); i++) {
                if (!isLetter(str.charAt(i))) {
                    result.append(str.charAt(i));
                } else {
                    result.append(builder.charAt(k));
                    k++;
                }
            }

            System.out.println(result);
        }

        scanner.close();
    }

    private static boolean isLetter(char c) {
        return c >= ‘a‘ && c <= ‘z‘ || c >= ‘A‘ && c <= ‘Z‘;
    }
}
时间: 2024-10-10 20:12:58

【华为OJ】【024-字符串排序】的相关文章

华为OJ:2290 字符串最后一个单词的长度

用JAVA就很简单,只要用spilt函数,再输出最后一个字符串. 题意是要求你先自己写分隔好字符串这样子.有个比较坑的地方就是测试用例应该有个全为空的,要注意. import java.util.Scanner; public class Main { public static void main(String args[]){ Scanner input=new Scanner(System.in); String s=input.nextLine(); String ss[]=s.spli

九度OJ 1066 字符串排序

题目1066:字符串排序 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4919 解决:1983 题目描述: 输入一个长度不超过20的字符串,对所输入的字符串,按照ASCII码的大小从小到大进行排序,请输出排序后的结果 输入: 一个字符串,其长度n<=20 输出: 输入样例可能有多组,对于每组测试样例, 按照ASCII码的大小对输入的字符串从小到大进行排序,输出排序后的结果 样例输入: dcba 样例输出: abcd #include<stdio.h> #include<

华为OJ平台——字符串分隔

题目描述: 连续输入字符串,请按长度为8拆分每个字符创 后输出到新的字符串数组: 长度不是8整数倍的字符串请在后面补数字0,空字符串不处理 输入 连续输入字符串(输入两次,每个字符长长度小于100)输出 输出到长度为8,的新字符串数组样例输入 abc 123456789样例输出 abc00000 12345678 90000000 思路: 都是直接处理,没有具体的方法而言 注意点: 华为的OJ平台的输入输出有点坑,好多次的程序都在这里出问题,在Eclipse上运行的结果没问题,然后在OJ上就是编

华为OJ:字符串合并处理

字符串合并处理 按照指定规则对输入的字符串进行处理. 详细描述: 将输入的两个字符串合并. 对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序.这里的下标意思是字符在字符串中的位置. 对排训后的字符串进行操作,如果字符为‘0’——‘9’或者‘A’——‘F’或者‘a’——‘f’,则对他们所代表的16进制的数进行BIT倒序的操作,并转换为相应的大写字符.如字符为‘4’,为0100b,则翻转后为0010b,也就是2.转换后的字符为‘2’: 如字符为‘7’,为0111b

华为OJ:字符串加解密

题目描述 1.对输入的字符串进行加解密,并输出. 2加密方法为: 当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B:字母Z时则替换为a: 当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0: 其他字符不做变化. 3.解密方法为加密的逆过程. 接口描述: 实现接口,每个接口实现1个基本操作: void Encrypt (char aucPassword[], char aucResult[]):在该函数中实现字符串加密并输出 说明: 1.字符串以

华为OJ平台——字符串通配符

题目描述: 在计算机中,通配符一种特殊语法,广泛应用于文件搜索.数据库.正则表达式等领域.现要求各位实现字符串通配符的算法.要求:实现如下2个通配符: *:匹配0个或以上的字符(字符由英文字母和数字0-9组成,不区分大小写.下同)(不包含. , 等特殊字符) ?:匹配1个字符 输入 通配符表达式: 一组字符串. 输出 返回匹配的结果,正确输出true,错误输出false 思路: 分三种情况: (1)无通配符的情况:对应的字符要完全相等,否则匹配失败,输出false (2)通配符为?的情况:对应的

华为OJ 字符串排序

写完之后,总觉得有点复杂.. 要求: 编写一个程序,将输入字符串中的字符按如下规则排序. 规则1:英文字母从A到Z排列,不区分大小写. 如,输入:Type输出:epTy 规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列. 如,输入:BabA输出:aABb 规则3:非英文字母的其它字符保持原来的位置. 如,输入:By?e输出:Be?y 样例: 输入: A Famous Saying: Much Ado About Nothing(2012/8). 输出: A aaAAbc dFgghh:

华为OJ:分段排序

题目有点绕,一个是要二分,用三个字符串,存前,中,后三个,前,后部分都降序排序,然后后半部分再反转一下,讲三部分合起来就好了. import java.util.Scanner; public class dividesort { public static void sort(StringBuffer s){ for(int i=0;i<s.length();i++){ for(int j=i;j<s.length();j++){ if(s.charAt(i)>s.charAt(j))

【华为OJ】【046-成绩排序】

[华为OJ][算法总篇章] [华为OJ][046-成绩排序] [工程下载] 题目描述 查找和排序 题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩 都按先录入排列在前的规则处理. 例示: jack 70 peter 96 Tom 70 smith 67 从高到低 成绩 peter 96 jack 70 Tom 70 smith 67 从低到高 smith 67 Tom 70 jack 70 peter 96 输入描述 输入多行,先输入要排序的人的个数,然后分别输入