当前位置:   article > 正文

字符串排序java语言实现_字符串按照字母表排序

字符串按照字母表排序

描述

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

规则 1 :英文字母从 A 到 Z 排列,不区分大小写。

如,输入: Type 输出: epTy

规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。

如,输入: BabA 输出: aABb

规则 3 :非英文字母的其它字符保持原来的位置。
 

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

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

输入描述:

输入字符串

输出描述:

输出字符串

示例1

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

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

题解

  1. import java.util.Scanner;
  2. import java.util.List;
  3. import java.util.ArrayList;
  4. import java.util.Comparator;
  5. public class Main {
  6. public static void main(String[] args) {
  7. Scanner sc = new Scanner(System.in);
  8. String str = sc.nextLine();
  9. //收集英文字母list集合
  10. List<Character> list = new ArrayList<>();
  11. for (char ch : str.toCharArray()) {
  12. if (Character.isLetter(ch)) {
  13. list.add(ch);
  14. }
  15. }
  16. //英文字母排序
  17. list.sort(new Comparator<Character>() {
  18. public int compare(Character c1, Character c2) {
  19. return Character.toLowerCase(c1) - Character.toLowerCase(c2);
  20. }
  21. });
  22. //插入非英文字母
  23. StringBuilder res = new StringBuilder();
  24. for (int i = 0, j = 0; i < str.length(); i++) {
  25. //判断是否是英文字母
  26. //是英文 添加英文list索引j处的字母 并且 j=j+1
  27. if (Character.isLetter(str.charAt(i))) {
  28. res.append(list.get(j++));
  29. }
  30. //不是英文直接添加
  31. else {
  32. res.append(str.charAt(i));
  33. }
  34. }
  35. System.out.println(res);
  36. }
  37. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/651187
推荐阅读
相关标签
  

闽ICP备14008679号