public class Solution
{
public string[] ReorderLogFiles(string[] logs)
{
var list1 = new List<string>();
var list2 = new List<string>();
foreach (var log in logs)
{
var spacePosition = log.IndexOf(' ');
var c = log[spacePosition + ];
if (c >= && c <= )
{
list2.Add(log);
}
else
{
list1.Add(log);
}
}
var list = list1.OrderBy(x => x.Substring(x.IndexOf(' ') + )).ToList();
list.AddRange(list2);
return list.ToArray();
}
}

补充一份C++的实现:

bool cmp(const pair<string, string>& a, const pair<string, string>& b) {
return a.second < b.second;
}
class Solution {
public:
vector<string> reorderLogFiles(vector<string>& logs) {
map<string, string> V1;//记录文本log
vector<string> V2;//记录数字log
for (auto log : logs) {
int spacePosition = ;
for (int i = ; i < log.length(); i++) {
if (log[i] == ' ') {
spacePosition = i;//找到第一个空格的下标
break;
}
}
char c = log[spacePosition + ];//找到空格后第一个字符
if (c >= && c <= ) {//ASCII码在48~57,表示数字0~9
V2.push_back(log);//存储数字log
}
else {
//Key值是原始log,Value值是去除头部的identifier之后的内容
V1.insert(make_pair(log, log.substr(spacePosition + )));
}
}
//将map转换为vector
vector<pair<string, string>> vec(V1.begin(), V1.end()); //按照value值排序
sort(vec.begin(), vec.end(), cmp); vector<string> V;//记录最终结果
for (auto p : vec) {
V.push_back(p.first);
}
for (auto p : V2) {
V.push_back(p);
}
return V;
}
}; int main()
{
Solution S;
vector<string> V;
V.push_back("a1 9 2 3 1");
V.push_back("g1 act car");
V.push_back("zo4 4 7");
V.push_back("ab1 off key dog");
V.push_back("a8 act zoo");
vector<string> V2 = S.reorderLogFiles(V);
for (auto v : V2) {
cout << v << endl;
}
}

提交显示错误的问题,我这里没有遇到,截图如下:

leetcode937的更多相关文章

  1. [Swift]LeetCode937. 重新排列日志文件 | Reorder Log Files

    You have an array of logs.  Each log is a space delimited string of words. For each log, the first w ...

  2. Leetcode937. Reorder Log Files重新排列日志文件

    你有一个日志数组 logs.每条日志都是以空格分隔的字串. 对于每条日志,其第一个字为字母数字标识符.然后,要么: 标识符后面的每个字将仅由小写字母组成,或: 标识符后面的每个字将仅由数字组成. 我们 ...

随机推荐

  1. 2、let 和 const 命令

    let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所 ...

  2. Spring目前用到的知识点

    2017/7/28 目前的工作,spring用到到的地方 在当前类有下列的代码 private BookDao bookDao bookDao.调用方法 点开这个方法,声明指向的是BookDao这个接 ...

  3. leetcode:Maximum Depth of Binary Tree【Python版】

    # Definition for a binary tree node # class TreeNode: # def __init__(self, x): # self.val = x # self ...

  4. 五、概念数据模型(CDM生成LDM,PDM和OOM)

      概念数据模型 概念数据模型(Conceptual Data Model,CDM):表达的是数据整体逻辑结构,该结构独立于任何软件和数据存储结构,即它只是系统分析人员,应用程序设计人员,维护人员和用 ...

  5. Spark的启动进程详解

    Master和Worker是执行任务之前存在的进程 (类似于公司) Driver和Excutor是任务执行之后存在的进程(类似于公司接到项目后才成立的项目小组) 启动步骤: 启动Master资源管理进 ...

  6. Jenkins系列之Jenkins配置常用工具和如何下载插件

    上一篇我们介绍了Jenkins的安装,这一篇我们介绍如何配置Jenkins的工具和如何下载插件. 首先我们先来看如何配置工具,这里的工具是指JDK.Ant.Maven.Git等. 1.点击系统管理,如 ...

  7. ThinkPHP 一直坚挺着

    ThinkPHP 一直坚挺着 从最初的 0.6 到现在的 5.2 ThinkPHP 走过了 12 年. 从 PHP 4 迭代到 PHP 7.3,每一次更新都给开源社区注入了活力. 这次国内开源软件的投 ...

  8. 【转】每天一个linux命令目录

    原文网址:http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html 开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列 ...

  9. windows 安装操作系统时切换分区表格式

    在出现分区管理界面时,按下shift+F10呼出命令行,输入diskpart 后尝试如下命令将磁盘分区表手动转换到MBR. list disk ---- 显示当前磁盘列表 select disk x ...

  10. java 物理资源回收 finally与try

    java垃圾回收机制不会回收任何物理资源(磁盘文件.数据库连接.网络连接),垃圾回收机制只能回收堆内存中对象所占用的内存. 方法一使用finally块,在finally块中写入资源回收代码,如下: p ...