class Solution {
public:
    // 官解二  需要额外存储的思路 只当联系对字符串的处理

    // 积累!
    // 把一个字符串 按给定 字符 分割 并返回 字符串的vec
    vector<string> split(const string&str, const char& delim)
    {
        vector<string> res;
        stringstream ss(str);

        string tmp;
        while(getline(ss, tmp, delim))
        {
            if(!tmp.empty())
                res.push_back(std::move(tmp));
        }

        return res;
    }

    int strs2num(string& ss)
    {
        int ret = 0;
        for(char c:ss)
        {
            int d = c-'0';
            ret = 10*ret + d;
        }

        return ret;
    }

    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 比较版本号
     * @param version1 string字符串 
     * @param version2 string字符串 
     * @return int整型
     */
    int compare(string version1, string version2) {
        // write code here

        vector<string> arr1 = split(version1, '.');
        vector<string> arr2 = split(version2, '.');

        int m = arr1.size();
        int n = arr2.size();

        int i=0, j=0;
        int num1 =0, num2 = 0;
        while(i<m || j<n)
        {
            num1 = 0;
            num2 = 0;
            if(i<m)
            {
                // 分别转为数字
                string ss1 = arr1[i];
                num1 = strs2num(ss1);
            }
            
            if(j<n)
            {
                string ss2 = arr2[j];
                num2 = strs2num(ss2);
            }
            
            if(num1<num2)
            {
                return -1;
            }
            else if(num1>num2)
            {
                return 1;
            }

            i++;
            j++;

        }

        return 0;

    }


};