比较版本号(Compare Version Numbers)
比较两个版本号 version1 和 version2。
如果 version1 > version2
返回 1
,如果 version1 < version2
返回 -1
, 除此之外返回 0
。
你可以假设版本字符串非空,并且只包含数字和 .
字符。
.
字符不代表小数点,而是用于分隔数字序列。
例如,2.5
不是“两个半”,也不是“差一半到三”,而是第二版中的第五个小版本。
示例 1:
输入:version1 = "0.1",
version2 = "1.1"
输出: -1
示例 2:
输入:version1 = "1.0.1",
version2 = "1"
输出: 1
示例 3:
输入:version1 = "7.5.2.4",
version2 = "7.5.3"
输出: -1
原题链接:https://leetcode-cn.com/problems/compare-version-numbers/
题解:
class Solution {
public:
int compareVersion(string version1, string version2) {
int len1 = version1.length();
int len2 = version2.length();
int i=0;
int j=0;
int num1=0;
int num2=0;
while(i<len1||j<len2)
{
while(i<len1&&version1[i]!='.')
{
num1=num1*10+(version1[i]-'0');
i++;
}
while(j<len2&&version2[j]!='.')
{
num2=num2*10+(version2[j]-'0');
j++;
}
if(num1>num2)
return 1;
if(num1<num2)
return -1;
num1 = 0;
num2 = 0;
i++;
j++;
}
if(num1==num2)
return 0;
}
};
在循环中主要需要解决的问题是字符串转换,找到不为 . 的字符转换成数字进行比较,按照从前向后的顺序比较就可以自动筛选出版本号的大小