zoukankan      html  css  js  c++  java
  • [LeetCode]36. 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

    解法:将version string拆分为一个个整数,从前往后对比即可。

    class Solution {
    public:
        int compareVersion(string version1, string version2) {
            vector<string> vs1 = split(version1, '.');
            vector<string> vs2 = split(version2, '.');
            int s1 = vs1.size(), s2 = vs2.size();
            if (s1 == 0 && s2 == 0) return 0;
            else if (s1 == 0 || s2 == 0) return s2 == 0 ? 1 : -1;
            else
            {
                int i, j;
                for (i = 0, j = 0; i < s1 && j < s2; ++i, ++j)
                {
                    if (stoi(vs1[i]) < stoi(vs2[j])) return -1;
                    if (stoi(vs1[i]) > stoi(vs2[j])) return 1;
                }
                while (i < s1)
                    if (stoi(vs1[i++]) > 0) return 1;
                while (j < s2)
                    if (stoi(vs2[j++]) > 0) return -1;
                return 0;
            }
        }
    private:
        vector<string> split(const string& str, const char delim)
        {
            vector<string> res;
            int start = 0, i = 0;
            for (int i = 0; i < str.size(); ++i)
            {
                if (str[i] == delim)
                {
                    string s(str.begin() + start, str.begin() + i);
                    if (!s.empty()) res.push_back(s);
                    start = i + 1;
                }
            }
            string s(str.begin() + start, str.end());
            if (!s.empty()) res.push_back(s);
            return res;
        }
    };
  • 相关阅读:
    web服务器-Apache
    nginx优化
    nginx下载限速
    nginx-URL重写
    HDU 5358 First One 求和(序列求和,优化)
    HDU 5360 Hiking 登山 (优先队列,排序)
    HDU 5353 Average 糖果分配(模拟,图)
    UVALive 4128 Steam Roller 蒸汽式压路机(最短路,变形) WA中。。。。。
    HDU 5348 MZL's endless loop 给边定向(欧拉回路,最大流)
    HDU 5344 MZL's xor (水题)
  • 原文地址:https://www.cnblogs.com/aprilcheny/p/4906216.html
Copyright © 2011-2022 走看看