LeetCode 937. 重新排列日志文件(自定义排序)

1. 题目

你有一个日志数组 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"]提示:
0 <= logs.length <= 100
3 <= logs[i].length <= 100
logs[i] 保证有一个标识符,并且标识符后面有一个字。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reorder-data-in-log-files
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 自定义排序

  • 注意用稳定排序
  • 自定义函数写法
string getStr(const string &s, string &pre)
{int i = 0;while(s[i] != ' '){pre += s[i];i++;}return s.substr(i+1);
}bool cmp(string a, string b)
{string preA, preB;string sa = getStr(a,preA), sb = getStr(b,preB);if((isdigit(sa[0]) && isdigit(sb[0])))return false;else if((isdigit(sa[0]) && !isdigit(sb[0])))return false;else if((!isdigit(sa[0]) && isdigit(sb[0])))return true;else{if(sa != sb)return sa < sb;elsereturn preA < preB;}
}class Solution {
public:vector<string> reorderLogFiles(vector<string>& logs) {stable_sort(logs.begin(), logs.end(), cmp);return logs;}
};

在这里插入图片描述

比较函数写在类内,需要加上static

class Solution {
public:vector<string> reorderLogFiles(vector<string>& logs) {stable_sort(logs.begin(), logs.end(), cmp);return logs;}static string getStr(const string &s, string &pre){int i = 0;while(s[i] != ' '){pre += s[i];i++;}return s.substr(i+1);}static bool cmp(string a, string b){string preA, preB;string sa = getStr(a,preA), sb = getStr(b,preB);if((isdigit(sa[0]) && isdigit(sb[0])))return false;else if((isdigit(sa[0]) && !isdigit(sb[0])))return false;else if((!isdigit(sa[0]) && isdigit(sb[0])))return true;else{if(sa != sb)return sa < sb;elsereturn preA < preB;}
}
};

在这里插入图片描述


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477972.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

预训练时代微调新范式,高性能加速2800%,NLPer赶紧看过来!

一、导读PaddleNLP 是兼具科研学习和产业实践能力的 Python NLP 工具包&#xff0c;提供中文领域丰富的预训练模型和部署工具&#xff0c;被高校、企业开发者广泛应用。近日&#xff0c;PaddleNLP v2.1正式发布&#xff0c;为开发者带来三项重要更新&#xff1a;开箱即用的工业…

论文浅尝 | GaussianPath: 用于知识图谱推理的贝叶斯多跳推理框架

笔记整理&#xff1a;谭亦鸣&#xff0c;东南大学博士生来源&#xff1a;AAAI’21链接&#xff1a;https://ojs.aaai.org/index.php/AAAI/article/view/16565多跳推理由于对下游任务例如问答和图谱补全的可解释性受到关注。多跳推理是一个典型的顺序决策过程&#xff0c;可表述…

AllenAI 发布万能问答系统 MACAW!各类题型样样精通,性能大幅超越 GPT-3!

文 | python前言GPT-3 等超大规模预训练语言模型&#xff0c;在少监督任务&#xff08;few-shot tasks&#xff09;上取得了令人瞩目的成绩。而这篇文章中&#xff0c;AllenAI的研究员提出了大规模生成式问答模型&#xff0c;MACAW。基于多角度预训练&#xff0c;MACAW可以用于…

论文浅尝 | SMBOP: Semi-autoregressive Bottom-up Semantic Parsing

笔记整理&#xff1a;陈永锐&#xff0c;东南大学博士来源&#xff1a;NAACL 2021概述近年来语义解析的事实上的标准解码方法是使用自顶向下的深度优先遍历对目标程序的抽象语法树进行自回归解码。该工作提出了一种替代方法&#xff1a;半自回归自底向上解析器&#xff08;SMBO…

美团酒店Node全栈开发实践

前后端分离的背景 “前后端分离”显然已不是什么新鲜的话题&#xff0c;Zakas在2013年10月份就曾发表过一篇博客《Node.js and the new web front-end》讨论Node背景下新时代的前端。毫无疑问&#xff0c;Node的出现给JavaScript语言带来了新的生机&#xff0c;也使得前端开发者…

统计学习方法总结

统计学习方法总结 阅读目录(Content)0. 相关知识点0x1: 监督学习1. 模型假设空间2. 生成模型与判别模型的联系与区别 3. 学习策略4. 分类问题与回归问题5. 利用模型进行预测和分析0x2&#xff1a;模型评估与模型选择1. 训练误差与测试误差2. 过拟合与模型选择0x3&#xff1a;正…

LeetCode 997. 找到小镇的法官(图的出度和入度)

1. 题目 在一个小镇里&#xff0c;按从 1 到 N 标记了 N 个人。传言称&#xff0c;这些人中有一个是小镇上的秘密法官。 如果小镇的法官真的存在&#xff0c;那么&#xff1a; 小镇的法官不相信任何人。每个人&#xff08;除了小镇法官外&#xff09;都信任小镇的法官。只有…

哈工大|NLP数据增强方法?我有15种

文 | rumor源 | 李rumor卷友们好&#xff0c;我是rumor。十一假期过的太快了&#xff0c;不知道你们缓过来没有&#xff0c;没有的话今天我们就来一起读一篇综述缓缓&#xff0c;弥补假期没学习的遗憾。这篇40多页的综述出自哈工大车万翔老师的团队&#xff0c;一共总结了15种N…

论文浅尝 | Wordly Wise(WoW) - 用于语音视觉知识问答的跨语言知识融合模型

笔记整理: 谭亦鸣&#xff0c;东南大学博士生来源&#xff1a;NAACL’21链接&#xff1a;https://aclanthology.org/2021.naacl-main.153.pdf论文提出了一种新的知识图谱问答数据集命名为FVSQA&#xff0c;这是一种语音视觉知识问答类型的任务&#xff0c;即问题形式为音频&…

美团Android DEX自动拆包及动态加载简介

概述 作为一个android开发者&#xff0c;在开发应用时&#xff0c;随着业务规模发展到一定程度&#xff0c;不断地加入新功能、添加新的类库&#xff0c;代码在急剧的膨胀&#xff0c;相应的apk包的大小也急剧增加&#xff0c; 那么终有一天&#xff0c;你会不幸遇到这个错误&a…

LeetCode 83. 删除排序链表中的重复元素(链表)

1. 题目 给定一个排序链表&#xff0c;删除所有重复的元素&#xff0c;使得每个元素只出现一次。 示例 1: 输入: 1->1->2 输出: 1->2示例 2: 输入: 1->1->2->3->3 输出: 1->2->3来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#…

用多模态信息做 prompt,解锁 GPT 新玩法

文 | 子龙编 | 小轶自多模态大火以来&#xff0c;井喷式地出现了许多工作&#xff0c;通过改造预训练语言模型&#xff0c;用图像信息来增强语义信息&#xff0c;但主要集中在几个 NLU 任务上&#xff0c;在 NLG 上的研究比较少。今天要介绍的这篇 paper Multimodal Conditiona…

论文浅尝 | 基于时序知识图谱的问答

笔记整理&#xff1a;姚云志&#xff0c;浙江大学在读博士&#xff0c;研究方向为自然语言处理。链接&#xff1a;https://arxiv.org/pdf/2106.01515.pdf时序知识图谱是一种多关系的知识图谱&#xff0c;相较于常规的知识图谱&#xff0c;时序知识图谱中的关系中会与时间段相关…

Logistic Regression 模型简介

逻辑回归&#xff08;Logistic Regression&#xff09;是机器学习中的一种分类模型&#xff0c;由于算法的简单和高效&#xff0c;在实际中应用非常广泛。本文作为美团机器学习InAction系列中的一篇&#xff0c;主要关注逻辑回归算法的数学模型和参数求解方法&#xff0c;最后也…

开源开放 | 中国近代历史人物知识图谱

OpenKG地址&#xff1a;http://openkg.cn/dataset/zgjdlsrw项目地址&#xff1a;http://www.zjuwtx.work/project/kg开放许可协议&#xff1a;CC BY-SA 4.0 &#xff08;署名相似共享&#xff09;贡献者&#xff1a;浙江大学&#xff08;王天笑&#xff09;1、引言中国近代历史…

LeetCode 1071. 字符串的最大公因子(字符串的最大公约数)

1. 题目 对于字符串 S 和 T&#xff0c;只有在 S T … T&#xff08;T 与自身连接 1 次或多次&#xff09;时&#xff0c;我们才认定 “T 能除尽 S”。 返回字符串 X&#xff0c;要求满足 X 能除尽 str1 且 X 能除尽 str2。 示例 1&#xff1a; 输入&#xff1a;str1 &q…

大模型炼丹无从下手?谷歌、OpenAI烧了几百万刀,总结出这些方法论…

文 | Yimin_饭煲都1202年了&#xff0c;不会真有深度学习炼丹侠还没有训练/推理过大模型吧“没吃过猪肉&#xff0c;还没见过猪跑吗&#xff1f;”在深度学习算力高度增长的今天&#xff0c;不论是学术界还是工业界的从业者&#xff0c;即使尚未达到从头预训练一个百亿级别参数…

Linux资源管理之cgroups简介

引子 cgroups 是Linux内核提供的一种可以限制单个进程或者多个进程所使用资源的机制&#xff0c;可以对 cpu&#xff0c;内存等资源实现精细化的控制&#xff0c;目前越来越火的轻量级容器 Docker 就使用了 cgroups 提供的资源限制能力来完成cpu&#xff0c;内存等部分的资源控…

会议交流 | IJCKG 2021:Keynotes released!欢迎注册参会

IJCKG 2021: The 10th International Joint Conference on Knowledge GraphsDecember 6-8, 2021 Online国际知识图谱联合会议之前是国际语义技术联合会议&#xff08;the Joint International Semantic Technology Conference (JIST)&#xff09;&#xff0c;JIST 会议的历史要…

LeetCode 1010. 总持续时间可被 60 整除的歌曲(哈希)

1. 题目 在歌曲列表中&#xff0c;第 i 首歌曲的持续时间为 time[i] 秒。 返回其总持续时间&#xff08;以秒为单位&#xff09;可被 60 整除的歌曲对的数量。形式上&#xff0c;我们希望索引的数字 i < j 且有 (time[i] time[j]) % 60 0。 示例 1&#xff1a; 输入&am…