LeetCode 937重新排列日志文件[自定义排序] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 937重新排列日志文件[自定义排序] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。


解题思路:
解题的关键首先将字母日志和数字日志分离,字母日志单独进行排序,排序采用自定义排序,内容不同返回内容顺序,否则返回整个字符串顺序,代码如下:

class Solution 
public:
    vector<string> reorderLogFiles(vector<string>& logs) 
        vector<string> letter, num;
        // 数字字母分类
        for(auto& log : logs) 
            int len = log.size();
            if(isalpha(log[len - 1])) 
                letter.emplace_back(log);
             else num.emplace_back(log);
        
        // 字母排序
        sort(letter.begin(), letter.end(), [&](string& a, string& b) 
            int lenA = a.size(), lenB = b.size();
            int index1 = a.find(' ') + 1, index2 = b.find(' ') + 1;
            string resA = a.substr(index1, lenA - 1), resB = b.substr(index2, lenB - 1);
            // 内容相同直接判断整个字符串
            if(resA == resB) 
                return a < b;
            
            // 内容不容判断内容
            return resA < resB;
        );
        // 将num插入到letter的后面
        letter.insert(letter.end(), num.begin(), num.end());
        return letter;
    
;

以上是关于LeetCode 937重新排列日志文件[自定义排序] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 937. 重新排列日志文件 / 1823. 找出游戏的获胜者(约瑟夫环问题) / 713. 乘积小于 K 的子数组

LeetCode937

937. 重新排列日志文件(Python)

[LeetCode] 937. Reorder Data in Log Files 日志文件的重新排序

[Leetcode]937. Reorder Log Files给日志文件排序

LeetCode 31. 下一个排列 | Python