Leetcode937. Reorder Log Files重新排列日志文件
你有一个日志数组 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] 保证有一个标识符,并且标识符后面有一个字。
 
错误:
 vector<string> Split(string x)
 {
	 vector<string> strs;
	 string temp = "";
	 for (int i = 0; i < x.size(); i++)
	 {
		 if (i == x.size() - 1 && x[i] != ' ')
			 temp += x[i];
		 if (x[i] == ' ' || i == x.size() - 1)
		 {
			 if (temp == "")
				 continue;
			 strs.push_back(temp);
			 temp = "";
		 }
		 else
			 temp += x[i];
	 }
	 return strs;
 }
 bool cmp(string x, string y)
 {
	 int i = 0, j = 0;
	 int len1 = x.size();
	 int len2 = y.size();
	 for (i = 0; i < len1; i++)
	 {
		 if (x[i] == ' ')
			 break;
	 }
	 i++;
	 for (j = 0; j < len2; j++)
	 {
		 if (y[j] == ' ')
			 break;
	 }
	 j++;
	 if (x[i] >= 'a' && x[i] <= 'z' && y[j] >= '0' && y[j] <= '9')
		 return true;
	 else if (x[i] >= '0' && x[i] <= '9' && y[j] >= 'a' && y[j] <= 'z')
		 return false;
	 else if (x[i] >= 'a' && x[i] <= 'z' && y[j] >= 'a' && y[j] <= 'z')
	 {
		 vector<string> strx = Split(string(x.begin() + i, x.end()));
		 vector<string> stry = Split(string(y.begin() + j, y.end()));
		 int k = 0, l = 0;
		 while (k < strx.size() && l < stry.size())
		 {
			 if (strx[k] == stry[l])
			 {
				 k++;
				 l++;
				 continue;
			 }
			 else
			 {
				 return strx[k] < stry[l];
			 }
		 }
		 return strx.size() < stry.size();
	 }
	 else if (x[i] >= '0' && x[i] <= '9' && y[j] >= '0' && y[j] <= '9')
		 return false;
	 return false;
 }
 class Solution {
 public:
	 vector<string> reorderLogFiles(vector<string>& logs)
	 {
		 sort(logs.begin(), logs.end(), cmp);
		 return logs;
	 }
 };
上个错误的原因是数字构成的日志文件,有的并没有按照原来的顺序排序。所以只要把字母和数字分开再排序即可。
 vector<string> Split(string x)
 {
	 vector<string> strs;
	 string temp = "";
	 for (int i = 0; i < x.size(); i++)
	 {
		 if (i == x.size() - 1 && x[i] != ' ')
			 temp += x[i];
		 if (x[i] == ' ' || i == x.size() - 1)
		 {
			 if (temp == "")
				 continue;
			 strs.push_back(temp);
			 temp = "";
		 }
		 else
			 temp += x[i];
	 }
	 return strs;
 }
 bool cmp(string x, string y)
 {
	 int i = 0, j = 0;
	 int len1 = x.size();
	 int len2 = y.size();
	 for (i = 0; i < len1; i++)
	 {
		 if (x[i] == ' ')
			 break;
	 }
	 i++;
	 for (j = 0; j < len2; j++)
	 {
		 if (y[j] == ' ')
			 break;
	 }
	 j++;
	vector<string> strx = Split(string(x.begin() + i, x.end()));
	vector<string> stry = Split(string(y.begin() + j, y.end()));
	int k = 0, l = 0;
	while (k < strx.size() && l < stry.size())
	{
		if (strx[k] == stry[l])
		{
			k++;
			l++;
			continue;
		}
		else
		{
			return strx[k] < stry[l];
		}
	}
	return strx.size() < stry.size();
 }
 class Solution {
 public:
	 vector<string> reorderLogFiles(vector<string>& logs)
	 {
		 vector<string> ans;
		 vector<string> strs;
		 vector<string> nums;
		 int len = logs.size();
		 for (int i = 0; i < len; i++)
		 {
			 int len2 = logs[i].size();
			 int  j;
			 for (j = 0; j < len2; j++)
			 {
				 if (logs[i][j] == ' ')
					 break;
			 }
			 j++;
			 if (logs[i][j] >= 'a' && logs[i][j] <= 'z')
			 {
				 strs.push_back(logs[i]);
			 }
			 else
			 {
				 nums.push_back(logs[i]);
			 }
		 }
		 sort(strs.begin(), strs.end(), cmp);
		 for (int i = 0; i < strs.size(); i++)
		 {
			 ans.push_back(strs[i]);
		 }
		 for (int i = 0; i < nums.size(); i++)
		 {
			 ans.push_back(nums[i]);
		 }
		 return ans;
	 }
 };												
											Leetcode937. Reorder Log Files重新排列日志文件的更多相关文章
- 【LeetCode】Reorder Log Files(重新排列日志文件)
		
这道题是LeetCode里的第937道题. 题目描述: 你有一个日志数组 logs.每条日志都是以空格分隔的字串. 对于每条日志,其第一个字为字母数字标识符.然后,要么: 标识符后面的每个字将仅由小写 ...
 - 【Leetcode_easy】937. Reorder Log Files
		
problem 937. Reorder Log Files solution: class Solution { public: vector<string> reorderLogFil ...
 - Linux /var/log下的各种日志文件详解
		
1)/var/log/secure:记录登录系统存取数据的文件;例如:pop3,ssh,telnet,ftp等都会记录在此. 2)/var/log/wtmp:记录登录这的信息记录,被编码过,所以必须以 ...
 - java最简单实现Log打印和生成日志文件
		
导包 1.commons-logging.jar包 下载 2.log4j.jar包 下载 配置log4j 1.在src根目录下创建一个log4j.properties文件. 文件全部内容如下: log ...
 - [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 ...
 - LeetCode.937-重新排序日志数组(Reorder Log Files)
		
这是悦乐书的第358次更新,第385篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第220题(顺位题号是937).你有一系列日志.每个日志都是以空格分隔的单词串. 每个日 ...
 - leecode 937 Reorder Log Files (模拟)
		
传送门:点我 You have an array of logs. Each log is a space delimited string of words. For each log, the ...
 - LeetCode 937 Reorder Log Files 解题报告
		
题目要求 You have an array of logs. Each log is a space delimited string of words. For each log, the fi ...
 - 937. Reorder Log Files
		
You have an array of logs. Each log is a space delimited string of words. For each log, the first w ...
 
随机推荐
- windows下mysql8.0.x简单安装!
			
1.官网下载mysql安装包并解压到自己喜欢的目录 2.在解压的目录下,添加my.ini配置文件,内容如下:[mysqld]# 设置3306端口port=3306# 设置mysql的安装目录 下面是我 ...
 - Bugs Integrated, Inc.
			
Bugs Integrated, Inc. 给出一个\(n\times m\)的矩形网格图,给出其中K个障碍物的位置,求其中最多能摆的\(2\times 3\)的矩形的个数,\(n\leq 150,m ...
 - Apocalypse Someday
			
Apocalypse Someday 定义一个数是合法的,当且仅当中间出现至少一个连续的大于三个的6,求第x个合法的数,\(x\leq 50,000,000\) 解 首先,注意到求第几个,即想到试填法 ...
 - 如何使用webpack 打包图片
			
最近在学习vue,需要用到webpack打包css,在webpack中文网https://www.webpackjs.com/里只有css的打包配置, 在编写css样式时,因为要引入 背景图片,打包时 ...
 - thinkphp  DEFINED标签
			
DEFINED标签用于判断某个常量是否有定义,用法如下: 大理石平台检验标准 <defined name="NAME"> NAME常量已经定义 </defined ...
 - 单调栈——cf777E
			
傻逼单调栈啊我怎么想了半天dp #include <bits/stdc++.h> using namespace std; typedef long long LL; typedef st ...
 - mac系统升级导致无法在iOS设备中运行Safari Web 调试器
			
macOS系统升级之后,可能会导致Safari开发选项中没有iOS设备,进而无法运行Safari Web 调试器. 此问题的解决办法: 请转到设置>常规>重置>重置位置和隐私.现在, ...
 - Echarts——更改仪表盘方向和颜色
			
做小项目需要用到仪表盘,官方给出的颜色设置如下: 而我想要如下样式的: 最后,经过一番折腾算是搞成了如下样式效果: 要达到上面效果关键在于设置Echarts的如下两处js代码: 1.大小值要颠倒,因为 ...
 - login-Linux必学的60个命令
			
1.作用 login的作用是登录系统,它的使用权限是所有用户. 2.格式 login [name][-p ][-h 主机名称] 3.主要参数 -p:通知login保持现在的环境参数. -h:用来向远程 ...
 - [转]Git 常用命令详解
			
史上最浅显易懂的Git教程 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/ ht ...