比较版本号
class Solution {
public:
int compareVersion(string version1, string version2)
{
//比较版本号的算法怎么实现呢
int len1 = version1.size();
int len2 = version2.size();
int index1 = 0;
int index2 = 0;
int num1 = 0;
int num2 = 0;
//对于这种东西要有一个统一的接口 要自己统一一下的
while (index1 != len1 && index2 != len2)
{
if (version1[index1] == '.')
++index1;
if (version2[index2] == '.')
++index2;
while (index1 != len1 - 1 && version1[index1 + 1] != '.')
{
num1 = num1 * 10 + version1[index1] - '0';
++index1;
}
num1 = num1 * 10 + version1[index1] - '0';
++index1;
while (index2 != len2 - 1 && version2[index2 + 1] != '.')
{
num2 = num2 * 10 + version2[index2] - '0';
++index2;
}
num2 = num2 * 10 + version2[index2] - '0';
++index2;
if (num1>num2)
return 1;
else if (num1<num2)
return -1;
num1 = 0;
num2 = 0;
}
while (index1 != len1)
{
if (version1[index1] == '.')
++index1;
while (index1 != len1 - 1 && version1[index1 + 1] != '.')
{
num1 = num1 * 10 + version1[index1] - '0';
++index1;
}
num1 = num1 * 10 + version1[index1] - '0';
++index1;
if (num1>0)
return 1;
num1 = 0;
}
while (index2!= len2)
{
if (version2[index2] == '.')
++index2;
while (index2 != len2-1 && version2[index2 + 1] != '.')
{
num2 = num2 * 10 + version2[index2] - '0';
++index2;
}
num2 = num2 * 10 + version2[index2] - '0';
++index2;
if (num2>0)
return -1;
num2 = 0;
}
return 0;
}
};
参考别人的简单代码:
class Solution {
public:
int compareVersion(string version1, string version2)
{
//比较版本号的算法怎么实现呢
int len1 = version1.size();
int len2 = version2.size();
int index1 = 0;
int index2 = 0;
int num1 = 0;
int num2 = 0;
while (index1 < len1 || index2 < len2)
{
num1 = 0;
num2 = 0;
while (index1 < len1)
{
if (version1[index1] == '.')
{
++index1;
break;
}
num1 = num1 * 10 + version1[index1] - '0';
++index1;
}
while (index2 < len2)
{
if (version2[index2] == '.')
{
++index2;
break;
}
num2 = num2 * 10 + version2[index2] - '0';
++index2;
}
if (num1 > num2)
return 1;
else if (num1 < num2)
return -1;
}
return 0;
}
};