165. Compare Version Numbers

Compare two version numbers version1 and version2.

If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0.

You may assume that the version strings are non-empty and contain only digits and the . character.

The . character does not represent a decimal point and is used to separate number sequences.
For instance, 2.5 is not "two and a half" or "half way to version three", it is the fifth second-level revision of the second first-level revision.

Here is an example of version numbers ordering:

0.1 < 1.1 < 1.2 < 13.37

思路:

1.将两个版本字符串都分割好存入vector中。

2.比较2个vector中元素的大小。

其中注意:1 == 1.0.0

class Solution {public:    vector
 stringSplit(string s, const char * split)    {        vector
 result;        const int sLen = s.length();        char *cs = new char[sLen + 1];        strcpy(cs, s.data());        char *p;        char * end;        p = strtok(cs, split);        while (p)        {            printf("%s\n", p);            string tmp(p);            int v = static_cast
(strtol(tmp.c_str(),&end,10));            result.push_back(v);            p = strtok(NULL, split);        }        return result;    }        int compareVersion(string version1, string version2) {        vector
 vecInt1 = stringSplit(version1,".");        vector
 vecInt2 = stringSplit(version2,".");                int i;        for(i = 0; i < min(vecInt1.size(),vecInt2.size()); i++)        {            if(vecInt1[i] < vecInt2[i])                 return -1;            else if(vecInt1[i] > vecInt2[i])                return 1;        }                if( vecInt1.size() < vecInt2.size())        {            int j = i;            for(;j 
 0)                    return -1;            }            return 0;        }        else if(vecInt1.size() > vecInt2.size())        {            int j = i;            for(;j < vecInt1.size();j++)            {                if(vecInt1[j] > 0)                    return 1;            }            return 0;        }        else            return 0;    }};