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
此题要注意循环条件,在计算每部分的数值时,有两个结束条件:长度不能大于字符串长度,当前字符等于'.'。
class Solution {
public:
int compareVersion(string version1, string version2) {
int num1,num2;
int i1=0,i2=0;
while(i1!=version1.length()||i2!=version2.length())
{
num1=0;
while(i1<version1.length())
{
if(version1[i1]=='.')
{
i1++;
break;
}
num1=num1*10+version1[i1]-'0';
i1++;
}
num2=0;
while(i2<version2.length())
{
if(version2[i2]=='.')
{
i2++;
break;
}
num2=num2*10+version2[i2]-'0';
i2++;
}
if(num1>num2)
return 1;
else if(num1<num2)
return -1;
}
return 0;
}
};