仅以此纪录每日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