2020_9_17_(Digits Are Not Just Characters)

直接一个一个比较(在边界判断的时候出错了。。。。。。)

#include <bits/stdc++.h>
using namespace std;
string a;
string b;
//判断数字的函数
//数字串如何解决呢
bool judgeNum(int i){
    if(a[i]>='0' && a[i] <= '9' && b[i]>='0' && b[i] <= '9' ){
    //转换为数字
    int suma = 0;
    for(int j = i;j<=a.size();j++){
        if(a[j]>='0' && a[j]<='9'){
            suma = suma*10 + (a[j]-'0');
        }
        else{
            break;
        }
    }
    int sumb = 0;
    for(int j = i;j<=b.size();j++){
        if(b[j]>='0'&& b[j]<='9'){
            sumb = sumb*10 + (b[j]-'0');
        }
        else{
            break;
        }
    }
    //if(a[i]>='0' && a[i] <= '9' && b[i]>='0' && b[i] <= '9' ){
            //字符串转换为数字
                    if(suma<sumb){
                        cout<<"+"<<endl;
                        return true;
                    }
                    else if(suma > sumb){
                        cout<<"-"<<endl;
                        return true;
                    }
                    else if(suma == sumb){
                            if(i+1==a.size() && i+1<b.size()){
                                cout<<"+"<<endl;
                                return true;
                            }
                            else if(i+1==b.size() && i+1<a.size()){
                                cout<<"-"<<endl;
                                return true;
                            }
                            else{
                           judgeNum(i+1);
                            }
                    }
                }
          else{
            return false;
          }
}
bool judgeLetter(int i){
   if((a[i]>='a' && a[i] <= 'z' || a[i]>='A' && a[i] <= 'Z')&& (b[i]>='a' && b[i] <= 'z' || b[i]>='A' && b[i] <= 'Z')){
                    if(a[i]<b[i]){
                        cout<<"+"<<endl;
                        return true;
                    }
                    else if(a[i]>b[i]){
                        cout<<"-"<<endl;
                        return true;
                    }
                    else if(a[i]==b[i]){
                            if(i+1==a.size() && i+1<b.size()){
                                cout<<"+"<<endl;
                                return true;
                            }
                            else if(i+1==b.size() && i+1<a.size()){
                                cout<<"-"<<endl;
                                return true;
                            }
                            else{
                             judgeLetter(i+1);
                            }
                    }
                }
          else{
              return false;
          }
}
int main()
{
    ios::sync_with_stdio(0);
    int n;
    cin>>n;
        cin>>a;//输入s0
        while(n--){
            cin>>b;
            //cout<<"b的长度"<<b.size()<<endl;
            //若果两字符串完全相等,直接判断然后执行下一个
            if(a==b){
                  cout<<"+"<<endl;
                  continue;
                }
            //否则一个一个判断,最多不超过九个
            for(int i=0;i<=8;i++){
                //如果一个是数字一个不是
                if((a[i]>='0' && a[i]<='9') && (b[i]<'0' || b[i]>'9')){//b不是数字
                    cout<<"+"<<endl;
                    break;
                }
                else if((a[i]<'0' || a[i]>'9') && (b[i]>='0' && b[i]<='9')){//a不是数字
                    cout<<"-"<<endl;
                    break;
                }
                 //如果都是数字
                else if(judgeNum(i)){
                   break;
                }
                else if(judgeLetter(i)){
                    break;
                }
            }

    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值