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