165. Compare Version Numbers

来源:互联网 发布:nike淘宝旗舰店真假 编辑:程序博客网 时间:2024/06/05 11:24

Problem

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

Solution

分析见注释

class Solution {public:    //按照'.'将字符串分段,比较每一段的值    int compareVersion(string version1, string version2)     {        //记得变量初始化        int val1 = 0;        int val2 = 0;        int i1 = 0;        int i2 = 0;        while(i1 < version1.length() || i2 < version2.length())        {            val1 = 0;            //求version字符串中的数字的值            while(i1 < version1.length())            {                //如果出现'.',则val的值已经求得,跳出whileif(version1[i1] == '.')                {                    ++i1;                    break;                }                val1 = val1*10 + (version1[i1]-'0');                ++i1;            }            val2 = 0;            while(i2 < version2.length())            {                if(version2[i2] == '.')                {                    ++i2;                    break;                }                val2 = val2*10 + (version2[i2]-'0');                ++i2;            }            if(val1>val2)                 return 1;            if(val1< val2)                return -1;        }        return 0;    }};
0 0