【Leetcode】2844-1588
前言
要求说的非常清晰的一个题目,只需要好好的想清楚如何做出来就好了
思路
首先,需要明确的是,可以被25整除的数字有哪些?
答:25,50,75,00,以及题目特殊说明的0,特别注意的是,如果选择了00,需要不是前导0,不过题目也说明了,不包含前导0,因此也可以不特殊考虑。
可以提前找到最后一个2 5 7 他们的位置吗?
答:不可以,以为我们要求找的是比如对于50,是找到最后一个0之前是否还有5,而不是最后一个5的位置。
class Solution:
def minimumOperations(self, num: str) -> int:
n = len(num)
# 00 25 50 75 0
ans = n
f0,f5 = True,True
for i in range(n-1,-1,-1):
if f0 and num[i]=='0':
ans = min(ans, n-1)
f0 = False
# 找00
t1 = num[:i].rfind('0')
if t1>=0:
ans = min(ans, n-t1-2)
# 找50
t2 = num[:i].rfind('5')
if t2>=0:
ans = min(ans, n-t2-2)
if f5 and num[i]=='5':
f5 = False
# 找25
t1 = num[:i].rfind('2')
if t1>=0:
ans = min(ans, n-t1-2)
# 找75
t2 = num[:i].rfind('7')
if t2>=0:
ans = min(ans, n-t2-2)
return ans

浙公网安备 33010602011771号