算法打卡6

26 篇文章 0 订阅

2042.检查句子中的数字是否递增

力扣

思路:

这里面的小技巧蛮多的,

把字符串加个非数字的以便当分隔符来判断;

把字符串的数字一 一取出来时,需要把取到的字符型数字变成一个数,然后看测例,都是十位和个位的数据,所以采用如: 12 顺次取数字 就是 1 *10 + 2;(其实这里就是 低位  和   高位不同的映射)

在这里需要注意了:因为题干要求的数字是 正整数。所以第一次取出来的如果是0,则需要抛弃。(为什么呢,第一次取的数字出来是0,说明不是正整数,但如果第二次取出来的是【 比如说 10,第二次取1,然后是0,那么就是那个sum语句那里所实现的功能。如果是 第一次是 0 ,第二次是 1 ;就满足不了都是 正整数 亦或 是 不含前导0 的条件】)

class Solution {
    bool isNumeric(char c) {
        return c >= '0' && c <= '9';
    }

public:
    bool areNumbersAscending(string s) {
       int pre = -100000;
       int sum = 0;
       s += " ";
       for(int i=0;i < s.size();++i)
       {
         if(isNumeric( s[i] ))
         {
             sum = sum *10 + s[i] - '0';//这里改为 sum *11 + s[i] - '0'运行速度会更快

         }
         else
         {
             if(sum == 0)
             {
                 continue;
             }
             if(sum > pre)
             {
                 pre = sum;
                 sum = 0;
             }
             else
             {
                 return false;
             }
         }
       }
       return true;
    }
};

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值