zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    golang 简易聊天
    golang 自定义封包协议(转的)
    PHP 7 测试用例(转)
    android 百度地图开发
    Android studio 签名使用转
    百度ueditor 拖文件或world 里面复制粘贴图片到编辑中 上传到第三方问题
    Android控件属性大全(转)
    Android studio 一个项目中添加两个module遇到的bug
    win7 64位DCOM配置(关于导出excel 配置计算机组件服务)(转)
    Python学习--07迭代器、生成器
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/4170656.html
Copyright © 2011-2022 走看看