[leetcode]Compare Version Numbers

本人的做法是转化成vector再处理,各种情况就比较简单了。

class Solution {

public:

    int compareVersion(string version1, string version2) {

        vector<int> v1 = convert(version1);

        vector<int> v2 = convert(version2);

        int size = min(v1.size(), v2.size());

        for (int i = 0; i < size; i++) {

            if (v1[i] < v2[i]) {

                return -1;

            } else if (v1[i] > v2[i]) {

                return 1;

            }

        }

        if (v1.size() > size) return 1;

        if (v2.size() > size) return -1;

        return 0;

    }

    

    vector<int> convert(string &version) {

        vector<int> result;

        int len = version.size();

        int num = 0;

        for (int i = 0; i < len; i++) {

            if (version[i] == '.') {

                result.push_back(num);

                num = 0;

            } else {

                num = num * 10 + (version[i] - '0');

            }

        }

        result.push_back(num);

        while (result.back() == 0) {

            result.pop_back();

        }

        return result;

    }

};

  

你可能感兴趣的:(LeetCode)