165. Compare Version Numbers

来源:互联网 发布:plc编程下载 编辑:程序博客网 时间:2024/06/06 05:30
class Solution {public:    queue<int> s1, s2;    int m[256];    int compareVersion(string version1, string version2) {        m['0'] = 0; m['1'] = 1;m['2'] = 2;m['3'] = 3;m['4'] = 4;        m['5'] = 5; m['6'] = 6;m['7'] = 7;m['8'] = 8;m['9'] = 9;        getVersions(s1, version1);        getVersions(s2, version2);        int f1, f2;        while(!s1.empty() && !s2.empty()){            f1 = s1.front(); f2 = s2.front();            if(f1 > f2)                return 1;            else if(f1 < f2)                return -1;            s1.pop(); s2.pop();        }        if(s1.size() > 0){            while(!s1.empty()){                if(s1.front())                    return 1;                s1.pop();            }        }        if(s2.size() > 0){            while(!s2.empty()){                if(s2.front())                    return -1;                s2.pop();            }        }        return 0;    }    void getVersions(queue<int> &s, string &version){        int head = 0;        for(int i = 0; i < version.size(); ++i){            if(version[i] == '.'){                s.push(simple_str2int(version, head, i-1));                head = i + 1;            }        }        s.push(simple_str2int(version, head, version.size() - 1));    }    int simple_str2int(const string &str, int low, int high){        int ans = 0;        while(low <= high){            ans = ans * 10 + m[str[low++]];        }        return ans;    }};

原创粉丝点击