• Compare Version Numbers(STRING-TYPE CONVERTION)


    QUESTION

    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
    1ST TRY

    class Solution {
    public:
        int compareVersion(string version1, string version2) {
            int integer1 = 0;
            int integer2 = 0;
            int i1 = 0;
            int i2 = 0;
            
            while(i1 < version1.length())
            {
                integer1 = 10*integer1 + version1[i1++] - '0';
                if(version1[i1] == '.') 
                {
                    i1++;
                    break;
                }
            }
            while(i2 < version2.length())
            {
                integer2 = 10*integer2 + version2[i2++] - '0';
                if(version2[i2] == '.') 
                {
                    i2++;
                    break;
                }
            }
            if(integer1 > integer2) return 1;
            else if(integer1 < integer2) return -1;
            
            integer1 = 0;
            integer2 = 0;
            while(i1 < version1.length())
            {
                integer1 = 10*integer1 + version1[i1++] - '0';
            }
            while(i2 < version2.length())
            {
                integer2 = 10*integer2 + version2[i2++] - '0';
            }
            if(integer1 > integer2) return 1;
            else if(integer1 < integer2) return -1;
            else return 0;
        }
    };

    Result: Wrong

    Input: "1.1", "1.01.0"
    Output: -1
    Expected: 0

    2ND TRY

    考虑有不只一个小数点的情况

    class Solution {
    public:
        int compareVersion(string version1, string version2) {
            int integer1 = 0;
            int integer2 = 0;
            int i1 = 0;
            int i2 = 0;
            
            while(i1 < version1.length() || i2 < version2.length())
            {
                while(i1 < version1.length())
                {
                    integer1 = 10*integer1 + version1[i1++] - '0';
                    if(version1[i1] == '.') 
                    {
                        i1++;
                        break;
                    }
                }
                while(i2 < version2.length())
                {
                    integer2 = 10*integer2 + version2[i2++] - '0';
                    if(version2[i2] == '.') 
                    {
                        i2++;
                        break;
                    }
                }
                if(integer1 > integer2) return 1;
                else if(integer1 < integer2) return -1;
                
                integer1 = 0;
                integer2 = 0;
            }
            return 0;
        }
    };

    Result: Accepted

  • 相关阅读:
    jmeter脚本开发:插件安装和设计场景(五)
    jmeter脚本开发:SOAP接口和JDBC(四)
    jmeter脚本开发:控制器和参数化(三)
    gauge自动化框架踩坑(六):关于csv
    gauge自动化框架踩坑(五):关于表格
    gauge自动化框架踩坑(四):在测试报告中自定义messages
    MediaPlayer播放音频,也可以播放视频
    soundpool播放声音
    ContentProvider
    了解 IMyInterface.Stub
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/4170656.html
Copyright © 2020-2023  润新知