LeetCode每日一题:Day3

发布于 2023-01-03  39 次阅读


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

难度

  • Easy
  • Medium
  • Hard

思路

题设已经保证句子一定符合正常句式,所以不用去想特殊情况,直接逐个对比句中每一个数字即可。

last 保存上一个数字,默认为 -1 ,用 cur 保存当前的连续数字字符串。

只要当前位的字符是数字,那么就累加到 cur 中,一旦当前位不是数字,或者下标已经到达最后一位,那么将 cur 转换为数字,与 last 进行对比,如果 last 不为 -1 ,且当前数字小于等于 last ,那么返回 False 。否则更新 last 值,并将 cur 清空。如果循环正常跳出,则返回 False

代码

class Solution:
    def areNumbersAscending(self, s: str) -> bool:
        last = -1
        cur = ""
        n = len(s)
        for idx in range(n):
            if 48 <= ord(s[idx]) <= 57:
                cur += s[idx]
            if (ord(s[idx]) < 48 or ord(s[idx]) > 57) or idx == n - 1:
                if cur != "":
                    num = int(cur)
                    if last != -1 and num <= last: return False
                    last = num
                    cur = ""
        return True