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

  • 题目:句子是由若干token组成的一个列表,token 间用 单个 空格分隔,句子没有前导或尾随空格。每个 token 要么是一个由数字0-9组成的不含前导零的 正整数 ,要么是一个由小写英文字母组成的 单词 。示例,"a puppy has 2 eyes 4 legs" 是一个由 7 token 组成的句子:"2" "4" 是数字,其他像"puppy"这样的 tokens 属于单词。给你一个表示句子的字符串 s ,你需要检查 s 中的 全部 数字是否从左到右严格递增(即,除了最后一个数字,s 中的 每个 数字都严格小于它 右侧 的数字)。如果满足题目要求,返回 true ,否则,返回 false1

  • 示例:

# 示例 1
输入:s = "1 box has 3 blue 4 red 6 green and 12 yellow marbles"
输出:true
解释:句子中的数字是:1, 3, 4, 6, 12 。
这些数字是按从左到右严格递增的 1 < 3 < 4 < 6 < 12# 示例 2
输入:s = "hello world 5 x 5"
输出:false
解释:句子中的数字是:5, 5 。这些数字不是严格递增的。
# 示例 3
输入:s = "sunset is at 7 51 pm overnight lows will be in the low 50 and 60 s"
输出:false
解释:s 中的数字是:7, 51, 50, 60 。这些数字不是严格递增的。
# 示例 4
输入:s = "4 5 11 26"
输出:true
解释:s 中的数字是:4, 5, 11, 26 。
这些数字是按从左到右严格递增的:4 < 5 < 11 < 26
  • 提示:
  1. 3 <= s.length <= 200
  2. s 由小写英文字母、空格和数字 09 组成(包含 09
  3. s 中数字 token的数目在 2100 之间(包含 2 100
  4. s 中的 token 之间由单个空格分隔
  5. s 中至少有 两个 数字
  6. s 中的每个数字都是一个 小于 100 的 正 数,且不含前导零
  7. s 不含前导或尾随空格
  • 思路:

定义一个list列表存取将字符串根据空格分割开的元素
定义一个num_list 空列表来存储list中为数字的元素,判断list中的值,若为数字则添加到num_list
用列表表达式将num_list中的值全换为int
采用for循环加if来判断num_list中的值是否为升序
若非升序,返回False;否则为True

  • 解法一:
class Solution:
    def selfDividingNumbers(self, left: int, right: int) -> List[int]:
        list = s.split(' ')
        num_list = []
        for i in list:
            if i.isdigit():
                num_list.append(i)
        num_list = [int(i) for i in num_list]
        for i in range(len(num_list)-1):
            if num_list[i] >= num_list[i + 1]:
                return False
        return True
  • 解法二:
class Solution:
    def selfDividingNumbers(self, left: int, right: int) -> List[int]:
        arr = []
        for num in s.split(" "):
            try:
                arr.append(int(num))
            except:
                continue
        for i in range(len(arr) - 1):
            if arr[i] >= arr[i + 1]:
                return False
        return True
  • 扩展:try-except可用来代替if

  1. 来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/check-if-numbers-are-ascending-in-a-sentence ↩︎

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值