牛客题霸 [比较版本号] C++题解/答案
题目描述
如果version1 > version2 返回1,如果 version1 < version2 返回-1,不然返回0.
输入的version字符串非空,只包含数字和字符.。.字符不代表通常意义上的小数点,只是用来区分数字序列。例如字符串2.5并不代表二点五,只是代表版本是第一级版本号是2,第二级版本号是5.
题解:
将小数点之前的转化成数num1.如果num1一样,依次比小数点后面的
代码:
class Solution {
public:
/**
* 比较版本号
* @param version1 string字符串
* @param version2 string字符串
* @return int整型
*/
int compare(string version1, string version2) {
// write code here
int i = 0; ///note version1
int j = 0; ///note version2
int num1 = 0;
int num2 = 0;
while (i<version1.size() && j<version2.size())
{
char a = version1[i];
char b = version2[j];
if (a != '.')num1 = num1*10 + (a - '0');
if (b != '.') num2 = num2*10 + (b - '0');
if (a=='.' && b=='.')
{
if (num1 > num2)
return 1;
else if (num1 < num2)
return -1;
else
{
num1 = 0;
num2 = 0;
}
}
if (a!='.' && b=='.')
i++;
else if (a=='.' && b!='.')
j++;
else{
i++;
j++;
}
}
if (i < version1.size())return 1;
if (j < version2.size())
return -1;
return 0;
}
};