问题描述
给定两个字符串,分别由数字和.
构成,表示两个版本号,要求对这两个版本号进行比较,如果第一个小于第二个,则返回 -1
,如果第一个大于第二个,则返回 1
,否则返回 0
。题目链接:**点我**
样例输入输出
输入:version1 = “1.01”, version2 = “1.001”
输出:0
输入:version1 = “0.1”, version2 = “1.1”
输出:-1
问题解法
直接用 split
函数对 .
进行分割,分别比较每个子字符串(将子字符串转成 10 进制数字进行比较,目的是取出前置 0 的干扰)。代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| class Solution { public int compareVersion(String version1, String version2) { String[] v1s = version1.split("\\."); String[] v2s = version2.split("\\."); int len = v1s.length < v2s.length ? v1s.length : v2s.length;
for (int i = 0; i < len; i++) { int temp = Integer.parseInt(v1s[i], 10) - Integer.parseInt(v2s[i], 10); if (temp > 0) { return 1; }
if (temp < 0) { return -1; } }
if (len == v1s.length) { for (int i = v1s.length; i < v2s.length; i++) { int temp = Integer.parseInt(v2s[i], 10); if (temp > 0) { return -1; } } } else { for (int i = v2s.length; i < v1s.length; i++) { int temp = Integer.parseInt(v1s[i], 10); if (temp > 0) { return 1; } } }
return 0; } }
|