LeetCode刷题8-字符串筛选排序
package com.example.demo.leetcode.case202208; import java.util.*; /** * 功能描述 * * @author ASUS * @version 1.0 * @Date 2022/8/6 */ public class Main2022080602 { /* 描述 编写一个程序,将输入字符串中的字符按如下规则排序。 规则 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). */ public static void main(String[] args) { // 获取输入的字符串 Scanner scanner = new Scanner(System.in); String s = scanner.nextLine(); char[] chars = s.toCharArray(); // 过滤特殊字符-只保留英文字母 有序 List<Character> characters = new ArrayList<>(); for (char ch : chars) { if (Character.isLetter(ch)) { characters.add(ch); } } // 将新的英文字母先排序处理 characters.sort(Comparator.comparingInt(Character::toLowerCase)); // 组装新的字符串 StringBuilder stringBuilder = new StringBuilder(); for (int i = 0, j = 0; i < chars.length; i++) { // 如果该位置是字母 则需要用排序好的英文字母中按顺序取出一个字母放到该位置 if (Character.isLetter(chars[i])) { stringBuilder.append(characters.get(j)); j++; } else { // 非字母处理 stringBuilder.append(chars[i]); } } // 打印 System.out.println(stringBuilder.toString()); } }
本文来自博客园,作者:chch213,转载请注明原文链接:https://www.cnblogs.com/chch213/p/16557238.html