LeetCode题解:2042. 检查句子中的数字是否递增,直接遍历,JavaScript,详细注释

34 阅读1分钟

原题链接: leetcode.cn/problems/ch…

解题思路:

  1. 逐个搜索s,如果遇到数字,则将其逐个提取,并存储到变量curr
  2. curr与上一个数字prev对比,如果prev >= curr,表示数字非递增,返回false
  3. 如果没有顺利退出循环,表示数字为递增,返回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
};