• HJ26 字符串排序


    本文解决问题的用意主要在于练习 Java Stream API 和 lambda 表达式,以及各种集合方法。 

    1、完整题目

    字符串排序_牛客题霸_牛客网

    描述

    编写一个程序,将输入字符串中的字符按如下规则排序。
    规则 1 :英文字母从 A 到 Z 排列,不区分大小写。
    如,输入: Type 输出: epTy
    规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。
    如,输入: BabA 输出: aABb
    规则 3 :非英文字母的其它字符保持原来的位置。

    如,输入: By?e 输出: Be?y

    数据范围:输入的字符串长度满足 1≤n≤1000 

    输入描述:输入字符串

    输出描述:输出字符串

    示例1

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

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

    2、Java代码

    • Character.isLetter(char c) 方法可判断字符是否为字母,相当于判断
      (c>='a'&& c<='z' || c>='A'&& c<='Z')
    • String.char() 获取字符流,ASCII码形式,即int型,可通过mapToObj(c -> (char)c)可以转化为字符型;
    • filter() 表示过滤,这里将所有大小写字母过滤出来;
    •  sorted(Comparator.comparingInt(Character::toLowerCase)):sorted表示排序,括号内是自定义的排序规则,这里是只统一比较各个字母小写格式下的顺序,可以避免对大小写不同的相同字母进行排序。相当于简化了:
      sorted((o1, o2) -> Character.toLowerCase(o1) - Character.toLowerCase(o2))
    • 对字符串长度进行反复操作时,用StringBuilder效率高些。
    1. import java.util.Scanner;
    2. import java.util.Comparator;
    3. import java.util.List;
    4. import java.util.stream.Collectors;
    5. public class Main {
    6. public static void main(String[] args) {
    7. Scanner in = new Scanner(System.in);
    8. while (in.hasNextLine()) {
    9. String str = in.nextLine();
    10. //将字符串中所有大小写字母过滤出来
    11. List list = str.chars().filter(c -> Character.isLetter(c)).mapToObj(c -> (char)c).sorted(Comparator.comparingInt(Character::toLowerCase)).collect(Collectors.toList());
    12. StringBuilder sb = new StringBuilder(str);
    13. int idx = 0;
    14. //遍历字符串,非字母则不变,是字母的话则逐个将list中的字母替换进去
    15. for (int i = 0; i < sb.length(); i++) {
    16. char c = sb.charAt(i);
    17. if(Character.isLetter(c)){
    18. sb.replace(i, i+1, list.get(idx) + "");
    19. idx++;
    20. }
    21. }
    22. System.out.println(sb);
    23. }
    24. }
    25. }

  • 相关阅读:
    怎样让健康码截图合并一张图片_健康码拼图
    k8s--基础--13--replicaset
    基于python-CNN深度学习的食物识别-含数据集+pyqt界面
    1.4 想要通过小红书赚钱,这些底层逻辑你一定要懂!【玩赚小红书】
    青龙面板-快手极速版(每天3块脚本)
    个人网站的SEO优化系列——如何实现搜索引擎的收录
    无需编写一行代码,实现任何方法的流量防护能力
    Mysql 索引原理和优化方式
    数组中指针不同加1的区别
    yolov2
  • 原文地址:https://blog.csdn.net/m0_37738114/article/details/134331529