# 1 题目描述

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.

Here is an example of version numbers ordering:

0.1 < 1.1 < 1.2 < 13.37

# 2 解题思路

“.”将两个数字分割开，只需要比较相同位置上的两个数字的大小即可。如果相同，则比较下一个，直到不相同（或者没有）为止。有个特殊情况（“1.0”与“1”相等）。

# 3 相关知识

1.将数组转化为List的方法（将其作为参数传进去）为：
String[] v1s = version1.split("\\.");

ArrayList<String> alv1 = new ArrayList<String>(Arrays.asList(v1s));
2.字符串的split()方法的使用情况参照网址：http://www.cnblogs.com/mingforyou/archive/2013/09/03/3299569.html

# 4 源代码

package com.larry.easy;

import java.util.ArrayList;
import java.util.Arrays;

public class CompareVersionNumbers {
public int compareVersion(String version1, String version2) {
String[] v1s = version1.split("\\.");
String[] v2s = version2.split("\\.");
ArrayList<String> alv1 = new ArrayList<String>(Arrays.asList(v1s));
ArrayList<String> alv2 = new ArrayList<String>(Arrays.asList(v2s));

//如果两个数组的个数不相同，较少的补零
int num = v1s.length - v2s.length;
if(num > 0){
for(int i = 0; i < num; i++) alv2.add("0");
}else if(num < 0){
for(int i = 0; num < 0; num++) alv1.add("0");
}

int size = alv1.size();
for(int i = 0; i < size; i++){
int first = Integer.parseInt(alv1.get(i));
int secd = Integer.parseInt(alv2.get(i));
if(first > secd) return 1;
else if(first < secd) return -1;
}
return 0;
}
public static void main(String[] args) {
String s1 = "0.1";
String s2 = "1.1";
String s3 = "0.1.0";
String s4 = "1";
String version1 = s4;
String version2 = s2;
System.out.println(new CompareVersionNumbers().compareVersion(version1, version2));
}
}


• 本文已收录于以下专栏：

## LeetCode 165: Compare Version Numbers

Compare two version numbers version1 and version2. If version1 > version2 return 1, if version1 vers...
• sunao2002002
• 2015年05月19日 12:28
• 1870

## leetcode 165 Compare Version Numbers C++

• a2331046
• 2016年08月18日 21:24
• 222

## LeetCode165——Compare Version Numbers

• booirror
• 2015年01月16日 15:43
• 3282

## LeetCode - 165. Compare Version Numbers

• shenzhu0127
• 2016年07月21日 11:30
• 151

## [Java]Leetcode165 Compare Version Numbers

[Java]Leetcode165 Compare Version Numbers
• fumier
• 2015年04月16日 14:03
• 703

## [Leetcode165] Compare Version Numbers

Compare two version numbers version1 and version2. If version1 > version2 return 1, if version1 ver...
• sbitswc
• 2015年08月16日 04:50
• 315

## 【leetcode 字符串处理】Compare Version Numbers

leetcode新题，Compare Version Numbers，字符串处理。题意：题意很清晰，就是比较“版本号”大小，给定的版本号version1和version2是字符串类型的，当versio...
• u012162613
• 2014年12月18日 00:53
• 5675

## [165] Compare Version Numbers

• camlot_
• 2016年07月28日 10:48
• 172

## 【LeetCode-面试算法经典-Java实现】【165-Compare Version Numbers（比较版本号）】

【165-Compare Version Numbers（比较版本号）】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题　　Compare two version number...
• DERRANTCM
• 2015年08月22日 06:49
• 2767

## leetcode_c++：Compare Version Numbers(165)

Compare two version numbers version1 and version2. If version1 > version2 return 1, if version1 < v...
• mijian1207mijian
• 2016年08月19日 16:03
• 63

举报原因： 您举报文章：Compare Version Numbers 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)