**Leetcode 165. Compare Version Numbers | string

https://leetcode.com/problems/compare-version-numbers/description/

如果有先导0,转化int可能更好


class Solution {
public:
    vector<int> v2v(string version1) {
        int ptr = 0, st = 0;
        vector<int> ret;
        while (ptr <= version1.size() ) {
            if (version1[ptr] == '.' || ptr == version1.size() ) {
                int v = stoi( version1.substr(st, ptr-st) );
                st = ptr + 1;
                ret.push_back(v);
            }
            ptr++;
        } 
        return ret;
    }
    
    int compareVersion(string version1, string version2) {
        vector<int> v1 = v2v(version1);
        vector<int> v2 = v2v(version2);
        int i = 0;
        for (; i < v1.size() && i < v2.size(); i++) {
            if (v1[i] == v2[i]) {
                continue;
            } else {
                if (v1[i] > v2[i])
                    return 1;
                else
                    return -1;
            }
        }
        
        if (v2.size() > v1.size()) {
            for (int j = i; j < v2.size(); j++)
                if (v2[j] != 0)
                    return -1;
        }
        else {
            if (v1.size() > v2.size()) {
                for (int j = i; j < v1.size(); j++) {
                    if (v1[j] != 0)
                        return 1;
                }
            }
        }
        return 0;
    }
};


猜你喜欢

转载自blog.csdn.net/u011026968/article/details/80935174