比较两个版本字符串version1和version2

该博客介绍了如何比较两个版本字符串version1和version2,当version1大于version2返回1,小于返回-1,相等返回0。版本号由数字和字符组成,字符不表示小数点。解决方法是将字符串按'.'分割,然后逐段比较。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值