原题链接:
https://leetcode.cn/problems/check-if-numbers-are-ascending-in-a-sentence/
解题思路:
- 逐个搜索
s
,如果遇到数字,则将其逐个提取,并存储到变量curr
中 - 将
curr
与上一个数字prev
对比,如果prev >= curr
,表示数字非递增,返回false
- 如果没有顺利退出循环,表示数字为递增,返回
true
/**
* @param {string} s
* @return {boolean}
*/
var areNumbersAscending = function(s) {
let prev = 0 // 存储上一个搜索到数字
let curr = 0 // 存储当前搜索到的数字
// 逐个查找字符
for (let i = 0; i < s.length;) {
// 如果当前字符是数字,提取数字并与前一个数字对比
if (/\d/.test(s[i])) {
// 逐个提取是数字的字符,并将其转换为数字
while (/\d/.test(s[i])) {
curr = curr * 10 + Number(s[i++])
}
// 提取出数字后,与上一个数字对比,如果非递增,就返回错误
if (prev >= curr) {
return false
}
// 将当前字符作为上一个字符,供下次对比用
prev = curr
// 将当前字符设置为0,用于提取下一个数字
curr = 0
} else {
// 如果当前字符不是数字,继续向后查找
i++
}
}
// 如果没有找到递减
return true
};