[LeetCode] 165. Compare Version Numbers 比较版本数

Compare two version numbers version1 and version1.
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

Credits:
Special thanks to @ts for adding this problem and creating all test cases.

给2个版本的字符串,里面只含数字和 ‘.‘ ,比较两个版本的大小。

解法:对字符串以 ‘.‘ ,进行分拆形成数组。然后从数组的第一个元素开始比较,如果相同就比较下一个元素,如果不同v1大就返回1,v2 大就返回-1,如果比较到最后都相同就返回0。

注意:如果产生的两个数组长度不一样,例如:1.2 < 1.2.3 则要把短的后面加上‘0‘补齐数组长度和长的一样,然后在进行比较。

Java:

    String[] arr1 = version1.split("\\.");
    String[] arr2 = version2.split("\\.");

    int i=0;
    while(i<arr1.length || i<arr2.length){
        if(i<arr1.length && i<arr2.length){
            if(Integer.parseInt(arr1[i]) < Integer.parseInt(arr2[i])){
                return -1;
            }else if(Integer.parseInt(arr1[i]) > Integer.parseInt(arr2[i])){
                return 1;
            }
        } else if(i<arr1.length){
            if(Integer.parseInt(arr1[i]) != 0){
                return 1;
            }
        } else if(i<arr2.length){
           if(Integer.parseInt(arr2[i]) != 0){
                return -1;
            }
        }

        i++;
    }

    return 0;
}

Java:

public class Solution {
    public int compareVersion(String version1, String version2) {
        if (version1 == null || version2 == null) return 0;
        String[] v1s = version1.split("\\.");
        String[] v2s = version2.split("\\.");
        int i = 0, j = 0, res = 0;
        while (i < v1s.length || j < v2s.length) {
            int ver1 = i < v1s.length ? Integer.valueOf(v1s[i++]) : 0;
            int ver2 = j < v2s.length ? Integer.valueOf(v2s[j++]) : 0;
            if (ver1 < ver2) return -1;
            else if (ver1 > ver2) return 1;
        }
        return 0;
    }
}

Python:

class Solution2(object):
    def compareVersion(self, version1, version2):
        """
        :type version1: str
        :type version2: str
        :rtype: int
        """
        v1, v2 = version1.split("."), version2.split(".")

        if len(v1) > len(v2):
            v2 += [‘0‘ for _ in xrange(len(v1) - len(v2))]
        elif len(v1) < len(v2):
            v1 += [‘0‘ for _ in xrange(len(v2) - len(v1))]

        i = 0
        while i < len(v1):
            if int(v1[i]) > int(v2[i]):
                return 1
            elif int(v1[i]) < int(v2[i]):
                return -1
            else:
                i += 1

        return 0

Python: My solution  

class Solution(object):
    """
    :type v1, str
    :type v2, str
    :rtype: int
    """
    def compareVersion(self, v1, v2):
        split_v1 = v1.split(‘.‘)
        split_v2 = v2.split(‘.‘)
        print split_v1, split_v2
        n1 = len(split_v1)
        n2 = len(split_v2)

        if n1 < n2:
            for i in xrange(n2 - n1):
                split_v1 += ‘0‘
        elif n1 > n2:
            for i in xrange(n1 - n2):
                split_v2 += ‘0‘

        for i in xrange(len(split_v1)):
            if split_v1[i] == split_v2[i]:
                continue
            if split_v1[i] > split_v2[i]:
                return 1
            if split_v1[i] < split_v2[i]:
                return -1

        return 0

类似题目:

[LeetCode] 278. First Bad Version 第一个坏版本

  

原文地址:https://www.cnblogs.com/lightwindy/p/8643778.html

时间: 2024-10-13 02:17:46

[LeetCode] 165. Compare Version Numbers 比较版本数的相关文章

leetCode 165. Compare Version Numbers 字符串

165. Compare Version Numbers 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 t

LeetCode 165 Compare Version Numbers(比较版本号)(string)(*)

翻译 比较两个版本号version1和version2. 如果version1大于version2返回1,如果version1小于version2返回-1,否则返回0. 你可以假设版本号字符串是非空并且只包含数字和"."字符. "."字符不代表十进制中的点,而被用作分隔数字序列. 例如,2.5不是"两个半",也不是"差一半到三",而是第二版中的第五个小版本. 这里有一个版本号排序的示例: 0.1 < 1.1 < 1

leetcode 165. Compare Version Numbers

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 . charac

Java for LeetCode 165 Compare Version Numbers

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 . characte

leetcode 165 Compare Version Numbers python

纯属吐槽..那坑爹的题目,不过也有可能是我e文没看太仔细吧 原题目 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

leetcode——165 Compare Version Numbers(数字版本的比较)

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 . charac

LeetCode:Compare Version Numbers - 比较版本号

1.题目名称 Compare Version Numbers(比较版本号) 2.题目地址 https://leetcode.com/problems/compare-version-numbers/ 3.题目内容 英文:Compare two version numbers version1 and version2. If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0. 中

165. Compare Version Numbers - LeetCode

Question 165. Compare Version Numbers Solution 题目大意: 比较版本号大小 思路: 根据逗号将版本号字符串转成数组,再比较每个数的大小 Java实现: public int compareVersion(String version1, String version2) { String[] v1Arr = version1.split("\\."); String[] v2Arr = version2.split("\\.&qu

No.165 Compare Version Numbers

No.165 Compare Version NumbersCompare 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