[LeetCode] 165. Compare Version Numbers 比较版本数
Compare two version numbers version1 and version1.
If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0.
You may assume that the version strings are non-empty and contain only digits and the .
character.
The .
character does not represent a decimal point and is used to separate number sequences.
For instance, 2.5
is not "two and a half" or "half way to version three", it is the fifth second-level revision of the second first-level revision.
Here is an example of version numbers ordering:
0.1 < 1.1 < 1.2 < 13.37
Credits:
Special thanks to @ts for adding this problem and creating all test cases.
给2个版本的字符串,里面只含数字和 '.' ,比较两个版本的大小。
解法:对字符串以 '.' ,进行分拆形成数组。然后从数组的第一个元素开始比较,如果相同就比较下一个元素,如果不同v1大就返回1,v2 大就返回-1,如果比较到最后都相同就返回0。
注意:如果产生的两个数组长度不一样,例如:1.2 < 1.2.3 则要把短的后面加上'0'补齐数组长度和长的一样,然后在进行比较。
Java:
String[] arr1 = version1.split("\\.");
String[] arr2 = version2.split("\\."); int i=0;
while(i<arr1.length || i<arr2.length){
if(i<arr1.length && i<arr2.length){
if(Integer.parseInt(arr1[i]) < Integer.parseInt(arr2[i])){
return -1;
}else if(Integer.parseInt(arr1[i]) > Integer.parseInt(arr2[i])){
return 1;
}
} else if(i<arr1.length){
if(Integer.parseInt(arr1[i]) != 0){
return 1;
}
} else if(i<arr2.length){
if(Integer.parseInt(arr2[i]) != 0){
return -1;
}
} i++;
} return 0;
}
Java:
public class Solution {
public int compareVersion(String version1, String version2) {
if (version1 == null || version2 == null) return 0;
String[] v1s = version1.split("\\.");
String[] v2s = version2.split("\\.");
int i = 0, j = 0, res = 0;
while (i < v1s.length || j < v2s.length) {
int ver1 = i < v1s.length ? Integer.valueOf(v1s[i++]) : 0;
int ver2 = j < v2s.length ? Integer.valueOf(v2s[j++]) : 0;
if (ver1 < ver2) return -1;
else if (ver1 > ver2) return 1;
}
return 0;
}
}
Python:
class Solution2(object):
def compareVersion(self, version1, version2):
"""
:type version1: str
:type version2: str
:rtype: int
"""
v1, v2 = version1.split("."), version2.split(".") if len(v1) > len(v2):
v2 += ['0' for _ in xrange(len(v1) - len(v2))]
elif len(v1) < len(v2):
v1 += ['0' for _ in xrange(len(v2) - len(v1))] i = 0
while i < len(v1):
if int(v1[i]) > int(v2[i]):
return 1
elif int(v1[i]) < int(v2[i]):
return -1
else:
i += 1 return 0
Python: My solution
class Solution(object):
"""
:type v1, str
:type v2, str
:rtype: int
"""
def compareVersion(self, v1, v2):
split_v1 = v1.split('.')
split_v2 = v2.split('.')
print split_v1, split_v2
n1 = len(split_v1)
n2 = len(split_v2) if n1 < n2:
for i in xrange(n2 - n1):
split_v1 += '0'
elif n1 > n2:
for i in xrange(n1 - n2):
split_v2 += '0' for i in xrange(len(split_v1)):
if split_v1[i] == split_v2[i]:
continue
if split_v1[i] > split_v2[i]:
return 1
if split_v1[i] < split_v2[i]:
return -1 return 0
类似题目:
[LeetCode] 278. First Bad Version 第一个坏版本
All LeetCode Questions List 题目汇总
[LeetCode] 165. Compare Version Numbers 比较版本数的更多相关文章
- ✡ leetcode 165. Compare Version Numbers 比较两个字符串数字的大小 --------- java
Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 &l ...
- Java for LeetCode 165 Compare Version Numbers
Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 &l ...
- Java [Leetcode 165]Compare Version Numbers
题目描述: Compare two version numbers version1 and version2.If version1 > version2 return 1, if versi ...
- Leetcode 165 Compare Version Numbers
题意:比较版本号的大小 有点变态,容易犯错 本质是字符串的比较,请注意他的版本号的小数点不知1个,有的会出现01.0.01这样的变态版本号 class Solution { public: int c ...
- 【LeetCode】165. Compare Version Numbers 解题报告(Python)
[LeetCode]165. Compare Version Numbers 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博 ...
- 165. Compare Version Numbers - LeetCode
Question 165. Compare Version Numbers Solution 题目大意: 比较版本号大小 思路: 根据逗号将版本号字符串转成数组,再比较每个数的大小 Java实现: p ...
- 【刷题-LeetCode】165 Compare Version Numbers
Compare Version Numbers Compare two version numbers version1 and version2. If *version1* > *versi ...
- 【一天一道LeetCode】#165. Compare Version Numbers
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 来源: htt ...
- 【LeetCode】165 - Compare Version Numbers
Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 &l ...
随机推荐
- Java 出现cannot be resolved to a type
package com.sysutil.util; /* thishi duo zhu */ // dan zhshi import com.sysutil.util.*; class Example ...
- Python获取当前脚本文件夹(Script)的绝对路径
Python获取当前脚本绝对路径 Python脚本有一个毛病,当使用相对路径时,被另一个不同目录下的py文件中导入时,会报找不到对应文件的问题.感觉是当前工作目录变成了导入py文件当前目录.如果你有配 ...
- 《逆袭团队》第九次团队作业:Beta冲刺与验收准备
项目 内容 软件工程 任课教师博客主页链接 作业链接地址 团队作业9:Beta冲刺与团队项目验收 团队名称 逆袭团队 具体目标 (1)掌握软件黑盒测试技术:(2)学会编制软件项目总结PPT.项目验收报 ...
- Beta:凡事预则立
课程名称:软件工程1916|W(福州大学) 作业要求:项目Beta冲刺) 团队名称:葫芦娃队 作业目标:尽力完成 团队博客 队员学号 队员昵称 博客地址 041602421 der himmel ht ...
- VMware共享本地文件
最后可以在这里找到
- DATAGRID显示序号
SolidBrush b = new SolidBrush(this.dgvDetail.RowHeadersDefaultCellStyle.ForeColor); e.Gra ...
- C++定义和初始化数组以及memset的使用(转)
一.一维数组 静态 int array[100]; 定义了数组array,并未对数组进行初始化 静态 int array[100] = {1,2}: 定义并初始化了数组array 动态 int* ar ...
- python 格式化输出%s %f %d
格式说明由%和格式字符组成,如%f,它的作用是将数据按照指定的格式输出.格式说明是由“%”字符开始的. 1.整型输出%d print 'my age is %d'% (26) 说明:%d相当于是一个占 ...
- go 学习 (一):环境配置
Go 下载地址:https://golang.google.cn/dl/ 右键我的电脑 --> 左上方 “高级系统设置” ---> 环境变量 --> 第二个菜单栏 “系统变 ...
- 查看.NET应用程序中的异常(下)
为什么要使用内存转储进行调试? 在两种主要情况下,您可能需要使用内存转储进行调试.第一种情况是应用程序有一个未处理的异常并崩溃,而您只有一个内存转储.第二种情况是,在生产环境中出现异常或特定行为,并且 ...