题目描述

如果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 条评论

发表评论

Avatar placeholder