165. Compare Version Numbers

来源:互联网 发布:js给下拉列表赋值 编辑:程序博客网 时间:2024/06/05 06:31
class Solution {public:    int compareVersion(string version1, string version2) {        int v1, v2, t;        string s1, s2;        v1 = version1.find('.');        v2 = version2.find('.');        while(v1 != -1 && v2 != -1)        {            s1 = version1.substr(0, v1);            s2 = version2.substr(0, v2);            s1 = f(s1, '0');            s2 = f(s2, '0');            t = compare(s1, s2);            if(t != 0)            return t;            version1 = version1.erase(0, v1+1);            version2 = version2.erase(0, v2+1);            v1 = version1.find('.');            v2 = version2.find('.');        }        if(v1 == -1 && v2 == -1)        return compare(f(version1, '0'), f(version2, '0'));        else if(v1 == -1)        {            s2 = version2.substr(0, v2);            t = compare(f(version1, '0'), f(s2, '0'));            if(t != 0)            return t;            else            {                version2 = version2.erase(0, v2+1);                version2 = ff(version2, '.');                version2 = ff(version2, '0');                if(version2  == "")                return 0;                else                return -1;            }        }        else        {            s1 = version1.substr(0, v1);            t = compare(f(s1, '0'), f(version2, '0'));            if(t != 0)            return t;            else            {                version1 = version1.erase(0, v1+1);                version1 = ff(version1, '.');                version1 = ff(version1, '0');                if(version1  == "")                return 0;                else                return 1;            }        }    }    string f(string s, char t)    {        int i = 0;        while(s[i] == t && i < s.size())        {            s.erase(i, 1);        }        return s;    }    string ff(string s, char t)    {        int i = 0;        while(i < s.size())        {            if(s[i] == t)            {                s.erase(i, 1);                i--;            }            i++;        }        return s;    }    int compare(string s1, string s2)    {        if(s1.size() > s2.size())        return 1;        else if(s1.size() < s2.size())        return -1;        else        {            for(int i = 0; i < s1.size(); i++)            {                if(s1[i] > s2[i])                return 1;                if(s1[i] < s2[i])                return -1;            }            return 0;        }    }};

原创粉丝点击