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. ADS1.2 调试问题

    最近一个程序需要用到ADS1.2这个软件,在使用过程中出现了如下问题: 1.由于以前用的是KEIL,所以没找到文件的工程,查资料才发现,这个工程文件打开的文件是MCP格式的文件: 2.调试的时候,没找 ...

  2. java 实现递归实现tree(2)

    import com.google.common.collect.Lists; import org.springframework.cglib.beans.BeanCopier; import ja ...

  3. share团队冲刺3

    团队冲刺第三天 昨天:完成了对输出文字,按钮控件的添加,能够将其在模拟器上运行 今天:学习输入的添加方式 问题:Android resource linking failed 在改变按钮样式的时候,出 ...

  4. thinkcmf2.2 火狐浏览器图片上传以及谷歌图片上传打开稍慢

    对目录中 admin/themes/simplebootx/asset/plupload.html 文件 进行更改如下图:

  5. python3转义编码

    s = 'dy电影' print(s) # dy电影 print(type(s)) # <class 'str'> print(s.encode('utf-8')) # b'dy\xe7\ ...

  6. 京东云数据库 RDS助力企业便捷运维

    iPhone6发布那年,京东在国贸等商圈送货最快速度数分钟,包括从下单到送达.这是一个极端的富含营销因素例子.即便如此,常态来看,隔天到货的这种业务模式,也是基于同样的支撑:营销业务.物流业务,大数据 ...

  7. 201409-1 相邻数对 Java

    两两比较,注意不要越界就行 import java.util.Arrays; import java.util.Scanner; public class Main { public static v ...

  8. JS—DOM操作

    节点分为三类: 1.元素节点:标签<div></div> 2.文本节点:标签内的纯文本. 3.属性节点:标签内的属性,id或class 查找元素: getElementById ...

  9. UML-迭代1-基础

    1.原则 1).拆分成多个按时间定量.风险驱动的迭代(细化1.细化2.细化3.细化4) 2).在多个迭代中,对同一用例增量开发. 2.最佳实践 设计人员:对架构的核心和风险做适当设计.实现和测试 研发 ...

  10. CocoaPods-Alcatraz插件

    Alcatraz:Xcode的插件管理工具,可通过它添加CocoaPods插件 下载地址:https://github.com/alcatraz/Alcatraz 建议: 不提倡通过终端命令下载Alc ...