zoukankan      html  css  js  c++  java
  • [LeetCode] 165. Compare Version Numbers

    Medimu

    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.

    You may assume the default revision number for each level of a version number to be 0. For example, version number 3.4 has a revision number of 3 and 4 for its first and second level revision number. Its third and fourth level revision number are both 0.

    Example 1:

    Input: version1 = "0.1", version2 = "1.1"
    Output: -1

    Example 2:

    Input: version1 = "1.0.1", version2 = "1"
    Output: 1

    Example 3:

    Input: version1 = "7.5.2.4", version2 = "7.5.3"
    Output: -1

    Example 4:

    Input: version1 = "1.01", version2 = "1.001"
    Output: 0
    Explanation: Ignoring leading zeroes, both “01” and “001" represent the same number “1”

    Example 5:

    Input: version1 = "1.0", version2 = "1.0.0"
    Output: 0
    Explanation: The first version number does not have a third level revision number, which means its third level revision number is default to "0"

    Note:

    1. Version strings are composed of numeric strings separated by dots . and this numeric strings may have leading zeroes.
    2. Version strings do not start or end with dots, and they will not be two consecutive dots.

    题目大意:比较两个版本号的大小,如果version1>version2返回1,如果version1<version2返回-1,否则返回0.

    方法:

    依次比较以点间隔的各段的数字大小。这道题的难点在于版本号的长度可能不相等,假如version1=1.0.0.1,version2=1.0,那么version1和version2重合的部分相同,但是多出来的部分还要继续遍历查看是否为0,如果不为零则version1较大,否则version1和version2相等。因此这里选择给较短的version号补零以达到两个version号长度相等,然后从头开始依次比较各段的数字大小,数字大的version大。

    代码如下:

    class Solution {
    public:
        int compareVersion(string version1, string version2) {
            string v1 = version1, v2 = version2;
            while (v1 != "0" || v2 != "0") {
                int n1 = stoi(v1.substr(0, v1.find(".")));
                int n2 = stoi(v2.substr(0, v2.find(".")));
                if (n1 > n2)return 1;
                else if (n1 < n2)return -1;
                if (v1.find(".") == v1.npos) {
                    v1 += ".0";
                }
                if(v2.find(".") == v2.npos){
                    v2 += ".0";
                }
                v1 = v1.substr(v1.find(".") + 1);
                v2 = v2.substr(v2.find(".") + 1);
            }
            return 0;
        }
    };
  • 相关阅读:
    web前端安全---读书笔记
    三色旗
    Pascal三角形
    汉诺塔算法
    冒泡排序算法
    HttpRunner 参数化数据驱动
    swagger接口变动监控
    HttpRunnerManager平台异步生成及展示代码覆盖率报告(ant+jacoco+jenkins+HttpRunnerManager)
    SonarQube+jenkins+maven平台搭建
    requests 模块
  • 原文地址:https://www.cnblogs.com/cff2121/p/11797622.html
Copyright © 2011-2022 走看看