如果version1 > version2 返回1,如果 version1 < version2 返回-1,不然返回0.
输入的version字符串非空,只包含数字和字符.。.字符不代表通常意义上的小数点,只是用来区分数字序列。例如字符串2.5并不代表二点五,只是代表版本是第一级版本号是2,第二级版本号是5.
输入描述:
两个字符串,用空格分割。 每个字符串为一个version字符串,非空,只包含数字和字符.
输出描述:
只能输出1, -1,或0
输入例子1:
0.1 1.1
输出例子1:
-1
分析:将两个串根据 . 分开,入队列,然后依次比较。
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
int main()
{
char str1[10000], str2[10000];
cin>>str1>>str2;
queue<int>q1,q2;
int len1 = strlen(str1);
int len2 = strlen(str2);
int num = 0;
for(int i = 0; i < len1; i++)
{
if(str1[i]>='0'&&str1[i]<='9')
{
num = num*10+(str1[i]-'0');
}else
{
q1.push(num);
num = 0;
}
}
q1.push(num);
num = 0;
for(int i = 0; i < len2; i++)
{
if(str2[i]>='0'&&str2[i]<='9')
{
num = num*10+(str2[i]-'0');
}else
{
q2.push(num);
num = 0;
}
}
q2.push(num);
while(!q1.empty()&&!q2.empty())
{
int x = q1.front();
int y = q2.front();
q1.pop();
q2.pop();
if(x>y)
{
cout<<"1"<<endl;
return 0;
}else if(x<y)
{
cout<<"-1"<<endl;
return 0;
}
}
if(q1.empty()&&q2.empty())cout<<"0"<<endl;
else if(q1.empty()&&!q2.empty())cout<<"-1"<<endl;
else cout<<"1"<<endl;
return 0;
}