博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字符串排序之一
阅读量:5052 次
发布时间:2019-06-12

本文共 2389 字,大约阅读时间需要 7 分钟。

规则 1 :英文字母从 A 到 Z 排列,不区分大小写。 如,输入: Type   输出: epTy 规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。 如,输入: BabA   输出: aABb 规则 3 :非英文字母的其它字符保持原来的位置。 如,输入: By?e   输出: Be?y 思路: 用一个list存放字母,用一个TreeMap存放按原来字符串的index为key升序的非字母映射; 在把TreeMap所有元素插入到list中,为了list不发生IndexOutOfBoundsException,TreeMap需要排序(本来想直接new ArrayList<>(字符串长度),还是会发生越界,直接TreeMap排序吧)。
public class StringSort {    private static String regex = "[a-zA-Z]";    @Test    public void testPatten(){        boolean b = Pattern.matches(regex, "?");        System.out.println(b);    }    public static  void main(String[] args){        Scanner scanner = new Scanner(System.in);        while (scanner.hasNext()){            String str = scanner.nextLine();            if(str == null || str.equals("")){                //return ;                continue;            }            List
list = new ArrayList<>();//存放字母的值 //map存放非字母的下标key与非字母的值value. //这里使用了TreeMap的排序,匿名类实现的方法就是普通的Integer排序,对map的key进行排序(数组下标), //防止将map中的元素按照key(list的下标)插入时发生IndexOutOfBoundsException Map
sortMap = new TreeMap<>(new Comparator
() { @Override public int compare(Integer o1, Integer o2) { return o1.compareTo(o2);//Integer默认的排序就行了 } }); for (int i=0; i
() { @Override public int compare(String o1, String o2) { //经过处理之后,list中的字符都为字母 if (o1.equalsIgnoreCase(o2)) {
//o1与o2是大小写关系 return 0;//等于 } else if (o1.toLowerCase().toCharArray()[0] > o2.toLowerCase().toCharArray()[0]) { //全部转化为小写,再将字符串转化为字符数组,由于只包含一个字符,直接取下标为"0"的元素 return 1;//大于 } else{
// if (o1.toLowerCase().toCharArray()[0] < o2.toLowerCase().toCharArray()[0]) {
return -1;//小于 } } }); sortMap.forEach( (k,v) -> { list.add(k.intValue(),v.charValue()+""); } ); list.forEach( n -> System.out.print(n) ); System.out.println(); } }}

 

转载于:https://www.cnblogs.com/theRhyme/p/9116814.html

你可能感兴趣的文章
获取JNDI数据源
查看>>
java听课笔记(十)
查看>>
flash与字符串:替换表情
查看>>
Docker常用命令
查看>>
windows7+docker添加php扩展
查看>>
[UE4]多播代理实例
查看>>
开奖计算---五星直选复式
查看>>
正则表达式
查看>>
HTML5 地理位置的获取 (精确)
查看>>
MongoDB - Cursors
查看>>
Servlet中Web.xml的配置详解
查看>>
PHP QR CODE 类库生成二维码
查看>>
SpringMVC(二七) 自定义视图
查看>>
git 版本控制
查看>>
浅谈叶小钗面试的几个问题
查看>>
进程间通信方式总结
查看>>
FCC 中级算法题 Finders Keepers
查看>>
Python之环境搭建与pycharm的配置django安装及MySQL数据库配置
查看>>
处理选中图片
查看>>
SpringBoot入门教程(十九)@ControllerAdvice+@ExceptionHandler全局捕获Controller异常
查看>>