zoukankan      html  css  js  c++  java
  • 【LeetCode】165. Compare Version Numbers

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

    将被'.'分割字段逐个取出做比较即可。

    class Solution {
    public:
        int compareVersion(string version1, string version2) {
            int len1 = version1.size();
            int len2 = version2.size();
            int begin1 = 0;
            int begin2 = 0;
            int end1 = 0;
            int end2 = 0;
            while(end1 != len1 && end2 != len2)
            {
                // extract section in version1
                string sec1;
                while(end1 != len1 && version1[end1] != '.')
                    end1 ++;
                if(end1 == len1)
                    sec1 = version1.substr(begin1);
                else
                {
                    sec1 = version1.substr(begin1, end1-begin1);
                    begin1 = end1 + 1;
                    end1 = begin1;
                }
                
                // extract section in version2
                string sec2;
                while(end2 != len2 && version2[end2] != '.')
                    end2 ++;
                if(end2 == len2)
                    sec2 = version2.substr(begin2);
                else
                {
                    sec2 = version2.substr(begin2, end2-begin2);
                    begin2 = end2 + 1;
                    end2 = begin2;
                }
                
                // compare sec1 and sec2
                int num1 = atoi(sec1.c_str());
                int num2 = atoi(sec2.c_str());
                if(num1 > num2)
                    return 1;
                if(num1 < num2)
                    return -1;
            }
            if(end1 == len1 && end2 == len2)
                return 0;
            while(end1 != len1)
            {// version1 remains
                string sec1;
                while(end1 != len1 && version1[end1] != '.')
                    end1 ++;
                if(end1 == len1)
                    sec1 = version1.substr(begin1);
                else
                {
                    sec1 = version1.substr(begin1, end1-begin1);
                    begin1 = end1 + 1;
                    end1 = begin1;
                }
                int num1 = atoi(sec1.c_str());
                if(num1 > 0)
                    return 1;
            }
            while(end2 != len2)
            {// version2 remains
                string sec2;
                while(end2 != len2 && version2[end2] != '.')
                    end2 ++;
                if(end2 == len2)
                    sec2 = version2.substr(begin2);
                else
                {
                    sec2 = version2.substr(begin2, end2-begin2);
                    begin2 = end2 + 1;
                    end2 = begin2;
                }
                int num2 = atoi(sec2.c_str());
                if(num2 > 0)
                    return -1;
            }
            return 0;
        }
    };

  • 相关阅读:
    7个最好的免费杀毒软件下载
    VMware虚拟机扩容
    tomcat的JK和JK2
    面向对象——接口
    JPA入门样例(採用JPA的hibernate实现版本号)
    JAVA数组的定义及用法
    Styles and Themes
    OpenSSL再曝CCS注入漏洞-心伤未愈又成筛子
    纯文本抽出程序库DMC TEXT FILTER
    数据结构课程设计之通讯录管理系统
  • 原文地址:https://www.cnblogs.com/ganganloveu/p/4582600.html
Copyright © 2011-2022 走看看