0%

leetCode-165:Compare Version Numbers

问题描述

给定两个字符串,分别由数字和. 构成,表示两个版本号,要求对这两个版本号进行比较,如果第一个小于第二个,则返回 -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;
}
}