题目描述
如果version1 > version2返回1,如果version1 < version2返回-1,不然返回0.
输入的version字符串非空,只包含数字和字符.。.字符不代表通常意义上的小数点,只是用来区分数字序列。例如字符串2.5并不代表二点五,只是代表版本是第一级版本号是2,第二级版本号是5.
输入描述:
两个字符串,用空格分割。 每个字符串为一个version字符串,非空,只包含数字和字符.
输出描述:
只能输出1, -1,或0
示例1
输入
0.1 1.1
输出
-1
备注:
version1和version2的长度不超过1000,由小数点'.'分隔的每个数字不超过256。
这道题主要靠 getchar() 来判断分割,scanf真的好用,最后的边界需要考虑。
#include<iostream>
#include<vector>
using namespace std;
vector<int>version1;
vector<int>version2;
int main(){
int flag = 1;
int num = -1;
char ch;
while(flag){//version1
scanf("%d",&num);
version1.push_back(num);
ch = getchar();
if( ch == ' ' )
flag = 0;
}
while(!flag){//version2
scanf("%d",&num);
version2.push_back(num);
ch = getchar();
if( ch == '\n' )
flag = 1;
}
flag = 0; // ans flag
for( int i = 0; i < version1.size(); i ++ ){
if( version1[i] < version2[i] ){
flag = -1;
break;
}
if( version1[i] > version2[i] ){
flag = 1;
break;
}
}
if( flag == 0 ){
if( version1.size() > version2.size() ) flag = 1;
if( version1.size() < version2.size() ) flag = -1;
}
printf("%d",flag);
}
0 条评论