165.比较版本号
第一轮思路
version1和version2一起遍历,各自设置一个flag1、flag2=0(用于判断前导0)
在遇到第一个非0数时置为1,遇到.时置为0(用于判断后半部分前导0)
将不是前导0的数字放到新的string1.string2 string3.string4
比较string1 string3的size,size不同输出大小,相同就遍历
比较string2 string4的size,size不同输出大小,相同就遍历
看了题解思路
自我怀疑中,像个傻子,学习一下好的思路:将版本号按’.'分隔,然后string转换成整数比大小
完整代码如下
#include <iostream>
#include <string>
using namespace std;
int compareVersion(string v1, string v2) {
int i=0;int j=0;
while(i<v1.size()||j<v2.size()){
int num1=0;
int num2=0;
while(i<v1.size()&&v1[i]!='.')
num1=num1*10+v1[i++]-'0';
while(j<v2.size()&&v2[j]!='.')
num2=num2*10+v2[j++]-'0';
if(num1 > num2)
return 1;
else if( num1 < num2)
return -1;
i++; j++;
}
return 0;
}
int main() {
string v1="1.01";
string v2="1.001";
cout<<compareVersion(v1,v2);
return 0;
}
庆祝文艺复兴第一题成功