Compare Version Numbers

原创 2015年07月06日 19:48:18

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
题目出处:https://leetcode.com/problems/compare-version-numbers/

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
  • sunao2002002
  • 2015年05月19日 12:28
  • 1870

leetcode 165 Compare Version Numbers C++

题目有一点没说明白,就是这个‘.’可能不止一个,可能有好多个,比如1.1.1.1.1.1.1 所以方式就是把所有的数字都提取出来,并且将两个数组用0对齐。 然后再比较。 int comp...
  • a2331046
  • a2331046
  • 2016年08月18日 21:24
  • 222

LeetCode165——Compare Version Numbers

题目 Compare two version numbers version1 and version1. If version1 > version2 return 1, if vers...
  • booirror
  • booirror
  • 2015年01月16日 15:43
  • 3282

LeetCode - 165. Compare Version Numbers

比较两个版本号的大小,首先自然是把两个String以"."分离开来,然后对它们一个一个进行比较。注意当其中的一个版本号长度比较小的时候,就在比较中将它设置为0,整体的代码如下: public cla...
  • shenzhu0127
  • shenzhu0127
  • 2016年07月21日 11:30
  • 151

[Java]Leetcode165 Compare Version Numbers

[Java]Leetcode165 Compare Version Numbers
  • fumier
  • 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
  • sbitswc
  • 2015年08月16日 04:50
  • 315

【leetcode 字符串处理】Compare Version Numbers

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

[165] Compare Version Numbers

给定两个使用“.”分割的版本号,实现comparable接口(相当于)。
  • camlot_
  • camlot_
  • 2016年07月28日 10:48
  • 172

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

【165-Compare Version Numbers(比较版本号)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Compare two version number...
  • DERRANTCM
  • 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
  • mijian1207mijian
  • 2016年08月19日 16:03
  • 63
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Compare Version Numbers
举报原因:
原因补充:

(最多只允许输入30个字)