博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
937-重新排列日志文件
阅读量:6313 次
发布时间:2019-06-22

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

前言

的第一题 :

你有一个日志数组 logs。每条日志都是以空格分隔的字串。

对于每条日志,其第一个字为字母数字标识符。然后,要么:

  • 标识符后面的每个字将仅由小写字母组成,或;
  • 标识符后面的每个字将仅由数字组成。

我们将这两种日志分别称为字母日志和数字日志。保证每个日志在其标识符后面至少有一个字。

将日志重新排序,使得所有字母日志都排在数字日志之前。字母日志按字母顺序排序,忽略标识符,标识符仅用于表示关系。数字日志应该按原来的顺序排列。

返回日志的最终顺序

示例:

输入:["a1 9 2 3 1","g1 act car","zo4 4 7","ab1 off key dog","a8 act zoo"]输出:["g1 act car","a8 act zoo","ab1 off key dog","a1 9 2 3 1","zo4 4 7"]

提示:

  1. 0 <= logs.length <= 100
  2. 3 <= logs[i].length <= 100
  3. logs[i] 保证有一个标识符,并且标识符后面有一个字。

解题思路

本题主要麻烦的地方是题目的描述有点难懂,其实是一道很简单的题目。

首先分析题目中对于日志字母日志数字日志的定义:

  1. 日志:指的是日志文件(本题中为字符串数组)中的一行记录,记录的内容为用空格分隔的字符串(后续称为单词),需要注意第一个单词是标识符用于排序。即 标识符 单词1 [单词2 ...]
  2. 字母日志:指的是日志内容除了标识符部分外的单词都由字母组成
  3. 数字日志:指的是日志内容除了标识符部分外的单词都由数字组成

然后分析题目意思,得出字符串数组的处理思路:

  1. 对日志进行分组,分为字母日志数字日志
  2. 字母日志重排序
  3. 字母日志数字日志聚合日志数据

实现代码

/**     * 937. 重新排列日志文件     * @param logs     * @return     */    public String[] reorderLogFiles(String[] logs) {        List
letterLogs=new LinkedList<>(); List
digitLogs=new LinkedList<>(); //日志分组 for(String log:logs){ char c=log.charAt(log.indexOf(" ")+1); if(c>=48 && c<=57){//是否包含数字 digitLogs.add(log); }else{ letterLogs.add(log); } } //字母日志排序 letterLogs.sort(new Comparator
() { @Override public int compare(String o1, String o2) {//只比较日志内容 String log1=o1.substring(o1.indexOf(" ")); String log2=o2.substring(o2.indexOf(" ")); return log1.compareTo(log2); } }); //聚合日志 letterLogs.addAll(digitLogs); return letterLogs.toArray(logs); }

转载地址:http://ncexa.baihongyu.com/

你可能感兴趣的文章
Java 编程的动态性, 第4部分: 用 Javassist 进行类转换--转载
查看>>
完毕port(CompletionPort)具体解释 - 手把手教你玩转网络编程系列之三
查看>>
iOS8 Push Notifications
查看>>
各大名企笔试及面经大全(程序猿必读)
查看>>
Oracle 连接、会话数的查看,修改
查看>>
Python使用QRCode模块生成二维码
查看>>
英语学习的重要性
查看>>
Android中Handler引起的内存泄露
查看>>
原产地政策,jsonp跨域
查看>>
HDU 1143 Tri Tiling(递归)
查看>>
ffmpeg参数具体解释
查看>>
记一次公司仓库数据库服务器死锁过程
查看>>
Oracle 11g password过期被锁定报道 ORA-28000 the account is locked
查看>>
【Struts2学习笔记(2)】Action默认值和配置Action于result各种转发类型
查看>>
轨磁条简介
查看>>
(算法)交错的字符串
查看>>
hdu 5471(状压DP or 容斥)
查看>>
oracle.jdbc.driver.OracleDriver和oracle.jdbc.OracleDriver这两个驱动的区别
查看>>
NSQ部署
查看>>
git常用命令记录
查看>>