Compare two version numbers version1 and version2.
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.

You may assume the default revision number for each level of a version number to be 0. For example, version number 3.4 has a revision number of 3 and 4 for its first and second level revision number. Its third and fourth level revision number are both 0.

Example 1:

Input: version1 = "0.1", version2 = "1.1"
Output: -1

Example 2:

Input: version1 = "1.0.1", version2 = "1"
Output: 1

Example 3:

Input: version1 = "7.5.2.4", version2 = "7.5.3"
Output: -1

Example 4:

Input: version1 = "1.01", version2 = "1.001"
Output: 0
Explanation: Ignoring leading zeroes, both “01” and “001" represent the same number “1”

Example 5:

Input: version1 = "1.0", version2 = "1.0.0"
Output: 0
Explanation: The first version number does not have a third level revision number, which means its third level revision number is default to "0"

Solution 1:

class Solution {
public int compareVersion(String version1, String version2) {
if (version1 == null || version2 == null) {
return 0;
}
String[] strArr1 = version1.split("\\.");
String[] strArr2 = version2.split("\\.");
int index = 0;
while (index < strArr1.length && index < strArr2.length) {
int cur_str1 = Integer.parseInt(strArr1[index]);
int cur_str2 = Integer.parseInt(strArr2[index]);
if (cur_str1 < cur_str2) {
return -1;
} else if (cur_str1 > cur_str2) {
return 1;
}
index += 1;
} if (index < strArr1.length) {
for (int i = index; i < strArr1.length; i++) {
if (Integer.parseInt(strArr1[i]) > 0) {
return 1;
}
}
}
if (index < strArr2.length) {
for (int j = index; j < strArr2.length; j++) {
if (Integer.parseInt(strArr2[j]) > 0) {
return -1;
}
}
}
return 0;
}
}

Solution 2:

class Solution {
public int compareVersion(String version1, String version2) {
String[] strArr1 = version1.split("\\.");
String[] strArr2 = version2.split("\\.");
int len = Math.max(strArr1.length, strArr2.length);
for (int i = 0; i< len; i++) {
int cur_str1 = i >= strArr1.length ? 0 : Integer.parseInt(strArr1[i]);
int cur_str2 = i >= strArr2.length ? 0 : Integer.parseInt(strArr2[i]);
if (cur_str1 < cur_str2) {
return -1;
} else if (cur_str1 > cur_str2) {
return 1;
}
}
return 0;
}
}

[LC] 165. Compare Version Numbers的更多相关文章

  1. 【LeetCode】165. Compare Version Numbers 解题报告(Python)

    [LeetCode]165. Compare Version Numbers 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博 ...

  2. 165. Compare Version Numbers - LeetCode

    Question 165. Compare Version Numbers Solution 题目大意: 比较版本号大小 思路: 根据逗号将版本号字符串转成数组,再比较每个数的大小 Java实现: p ...

  3. 【刷题-LeetCode】165 Compare Version Numbers

    Compare Version Numbers Compare two version numbers version1 and version2. If *version1* > *versi ...

  4. 165. Compare Version Numbers比较版本号的大小

    [抄题]: Compare two version numbers version1 and version2.If version1 > version2 return 1; if versi ...

  5. ✡ leetcode 165. Compare Version Numbers 比较两个字符串数字的大小 --------- java

    Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 &l ...

  6. Java for LeetCode 165 Compare Version Numbers

    Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 &l ...

  7. 【LeetCode】165 - Compare Version Numbers

    Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 &l ...

  8. Java [Leetcode 165]Compare Version Numbers

    题目描述: Compare two version numbers version1 and version2.If version1 > version2 return 1, if versi ...

  9. 165. Compare Version Numbers

    题目: Compare two version numbers version1 and version2.If version1 > version2 return 1, if version ...

随机推荐

  1. try{}catch{}finally{}使用总结

    import java.util.Scanner; class MyException extends Exception { public MyException(String Message) { ...

  2. cuda addressMode解析

    cudaAddressModeClamp:超出范围就用边界值代替,示意: AA | ABCDE | EE cudaAddressModeBorder:超出范围就用零代替,示意: 00 | ABCDE ...

  3. 1. laravel 学习 环境搭建

    1. 项目环境 vagrant + laradock  (因为 自己手动搭建环境太麻烦了 自己弄了一下 感觉还是有些漏洞 所以采用 laradock) 2. Vagrantfile 备注 : box  ...

  4. 104. HttpRequest对象详解

    WSGIRequest 对象常用的属性和方法: WSGIRequest对象常用的属性: WSGIRequest对象大部分属性都是只读的,因为这些属性是从客户端上传上来的,没必要做任何的修改.以下对一些 ...

  5. Python笔记_第四篇_高阶编程_进程、线程、协程_4.协程

    1.协程的概念: 子程序或者子函数,在所有语言中都是层级调用,比如A调用B,再B执行的过程中又可以调用C,C执行完毕返回,B执行返回,最后是A执行完毕返回.是通过栈来实现的,一个线程就是执行一个自称, ...

  6. JS中,输出1-10之间的随机整数

    <script> document.write(parseInt(10*Math.random())); //输出0-10之间的随机整数 document.write(Math.floor ...

  7. python paramiko登陆设备

    一,单线程 - shell交互 def chan_recv(chan): data = chan.recv(1024) # 收1024数据 sys.stdout.write(data.decode() ...

  8. py02_03:py的数据类型

    数据类型初识 1. 整数(int) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位系统上,整数的位数为64位,取值 ...

  9. Python 学习笔记:根据输入年月区间,返回期间所有的月份

    目的: 给定一个年月区间,比如:2019.01 至 2019.05,要求返回一个包含期间所有的月份的列表,比如:['2019.01', '2019.02', '2019.03', '2019.04', ...

  10. Python基础学习四

    Python基础学习四 1.内置函数 help()函数:用于查看内置函数的用途. help(abs) isinstance()函数:用于判断变量类型. isinstance(x,(int,float) ...