【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 
posted @ 2024-07-26 09:30  TICSMC  阅读(4)  评论(0)    收藏  举报