题目描述
如果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 条评论