力扣每日一题(四十八——字符串转换整数(atoi))

这篇博客介绍了如何解决LeetCode上的两道题目,第一题涉及将字符串转换为整数,主要利用Python的ord()函数判断字符是否为数字;第二题是一个简单的博弈问题,通过遍历字符串来确定哪位玩家能赢得游戏。博主通过简洁的代码解释了思路和解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

仅以此纪录每日LeetCode所刷题目。

题目描述:

示例:

思路:

这道题如果使用Python的正则表达式,可以一行代码完成,但是除了正则表达式这种方法,我们还可以按照题目给出的算法要求一步一步进行。因为题目的算法要求已经写得很明确了,所以我直接放代码了。注:ord()函数返回的是ascⅡ码,用来判断该字符是否为数字。

代码:

class Solution:
    def myAtoi(self, s: str) -> int:
        res = '0'
        while len(s) > 0:
            if s[0] == ' ' and res == '0':
                s = s[1:]
            elif s[0] == '-'and res == '0':
                res = '-'
                s = s[1:]
            elif s[0] == '+' and res == '0':
                res = '+'
                s = s[1:]
            elif 48 <= ord(s[0]) <= 57:
                res = res + s[0]
                s = s[1:]
            else:
                s = ''
        if res == '-' or res == "+":
            res = 0
        res = int(res)
        if res >= 2**31-1:
            return 2**31-1
        elif res <= -2**31:
            return -2**31
        else:
            return res

题目描述:

示例:

思路:

这道题和它的难度系数不是很相符,这两个人都不能互相干扰对方。因为相邻的三个字符删除一个,所以剩下两个字符是不动的,不会出现'AAABBBAAA'其中'BBB'删除之后左面的'A'和右面的'A'连起来的情况。所以我们只需要遍历一边数组,看看有多少个'A'的左右都是'A',看看有多少个'B'的左右都是'B',如果'A'多则alice胜,反之bob胜。

代码:

class Solution:
    def winnerOfGame(self, colors: str) -> bool:
        if len(colors) < 3:
            return False
        count = 0
        for i in range(1,len(colors)-1):
            if colors[i] == colors[i-1] == colors[i+1] == 'A':
                count += 1
            if colors[i] == colors[i-1] == colors[i+1] == 'B':
                count -= 1
        return count > 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值