leetcode937
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的更多相关文章
- [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 ...
- Leetcode937. Reorder Log Files重新排列日志文件
你有一个日志数组 logs.每条日志都是以空格分隔的字串. 对于每条日志,其第一个字为字母数字标识符.然后,要么: 标识符后面的每个字将仅由小写字母组成,或: 标识符后面的每个字将仅由数字组成. 我们 ...
随机推荐
- ZH奶酪:【数据结构与算法】基础排序算法总结与Python实现
1.冒泡排序(BubbleSort) 介绍:重复的遍历数列,一次比较两个元素,如果他们顺序错误就进行交换. 2016年1月22日总结: 冒泡排序就是比较相邻的两个元素,保证每次遍历最后的元素最大. 排 ...
- 12 Factor CLI Apps
CLIs are a fantastic way to build products. Unlike web applications, they take a small fraction of t ...
- 查询语句中 select from where group by having order by 的执行顺序
查询中用到的关键词主要包含六个,并且他们的顺序依次为 select--from--where--group by--having--order by 其中 select 和 from 是必须的,其他关 ...
- js ==与===区别(非严格相等与严格相等)
基本数据类型:number.string.boolean.undefined.null 高级数据类型:object 表格形式比较: 比较的类型 == === 基础类型 不同基础类型间比较," ...
- webpack externals
当我们想在项目中require一些其他的类库或者API,而又不想让这些类库的源码被构建到运行时文件中,这在实际开发中很有必要.此时我们就可以通过配置externals参数来解决这个问题: //webp ...
- golang defer的使用
defer一般用于在函数结束时执行必要的处理工作.例如,关闭文件描述符,关闭网络连接等等. 函数中可以定义多个defer,执行的时候按照先进后出的顺序. defer定义的语句,即使遇到panic,也会 ...
- PHP CI框架如何去掉 sql 里的反引号
在使用CI框架的时候, 经常的Active Record 类,这时候会出现一个问题 使用Active Record 类组成的sql 中,为了防止sql注入,会自动的在表名,字段名 自动添加反引号 当然 ...
- 【Oracle学习笔记-5--】集合操作之union,intersect和minus操作
--union并操作 select e.employee_id,e.last_name from hr.employees e where e.last_name like 'C%' union se ...
- 网络对抗 Exp0 Kali安装 Week1
2018-2019 网络对抗 Exp0 Kali安装 Week1 目录 一.下载 二.安装运行 三.配置 四.问题 一.下载 在百度中搜索kali linux 选择并点击Kali Linux | Pe ...
- Java-Runoob-高级教程-实例-数组:05. Java 实例 – 数组输出
ylbtech-Java-Runoob-高级教程-实例-数组:05. Java 实例 – 数组输出 1.返回顶部 1. Java 实例 - 数组输出 Java 实例 以下实例演示了如何通过循环输出数 ...