首页 > 其他 > 详细

leetecode937 - Reorder Data in Log Files - easy

时间:2020-08-20 09:25:10      阅读:60      评论:0      收藏:0      [点我收藏+]

You have an array of logs.  Each log is a space delimited string of words.

For each log, the first word in each log is an alphanumeric identifier.  Then, either:

  • Each word after the identifier will consist only of lowercase letters, or;
  • Each word after the identifier will consist only of digits.

We will call these two varieties of logs letter-logs and digit-logs.  It is guaranteed that each log has at least one word after its identifier.

Reorder the logs so that all of the letter-logs come before any digit-log.  The letter-logs are ordered lexicographically ignoring identifier, with the identifier used in case of ties.  The digit-logs should be put in their original order.

Return the final order of the logs.

 

Example 1:

Input: logs = ["dig1 8 1 5 1","let1 art can","dig2 3 6","let2 own kit dig","let3 art zero"]
Output: ["let1 art can","let3 art zero","let2 own kit dig","dig1 8 1 5 1","dig2 3 6"]

 

Constraints:

  1. 0 <= logs.length <= 100
  2. 3 <= logs[i].length <= 100
  3. logs[i] is guaranteed to have an identifier, and a word after the identifier.
 
stable sort练一下custom comparator

comparison function object (i.e. an object that satisfies the requirements of Compare) which returns ?true if the first argument is less than (i.e. is ordered before) the second.

The signature of the comparison function should be equivalent to the following:

 bool cmp(const Type1 &a, const Type2 &b);

 
1. 数字的只跟字母的比,本身不互相比较了,所以a是数字组的话return false,b是数字组的话return true,目的都是让它们去后面
2. 字母间比较,除去identifier无大小之分的话,比包含identifier
 
string之间比较用compare!!一样的话s1.compare(s2) == 0
 
实现:
class Solution {
private:
    static bool cmp(string a, string b){
        string afterIdA = a.substr(a.find( )+1);
        string afterIdB = b.substr(b.find( )+1);
        
        if (isdigit(afterIdA[0]))
            return false;
        else if (isdigit(afterIdB[0]))
            return true;
        
        if (afterIdA.compare(afterIdB) != 0)
            return afterIdA.compare(afterIdB) < 0;
        else
            return a.compare(b);
    }
public:
    vector<string> reorderLogFiles(vector<string>& logs) {
        stable_sort(logs.begin(), logs.end(), cmp);
        return logs;
    }
};

 

leetecode937 - Reorder Data in Log Files - easy

原文:https://www.cnblogs.com/xuningwang/p/13532945.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!