Leetcode # 2844. Minimum Operations to Make a Special Number
- 2023.09.10
- ★★ Medium Finite-State Machine LeetCode
Problem
Solution
Time Complexity: O(len(num))
Space Complexity: O(1)
(The input and output generally do not count towards the space complexity.)
class Solution: def minimumOperations(self, num: str) -> int: n = len(num) first_0 = first_5 = _2_or_7_after_first_5 = _5_or_0_after_first_0 = -1 for i in range(n): if all(var >= 0 for var in [first_0, first_5, _2_or_7_after_first_5, _5_or_0_after_first_0]): break d = num[-1 - i] if first_0 < 0: if d == "0": first_0 = i elif _5_or_0_after_first_0 < 0 and (d == "5" or d == "0"): _5_or_0_after_first_0 = i if first_5 < 0: if d == "5": first_5 = i elif _2_or_7_after_first_5 < 0 and (d == "2" or d == "7"): _2_or_7_after_first_5 = i ans = n if first_0 >= 0: if _5_or_0_after_first_0 >= 0: ans = _5_or_0_after_first_0 - 1 # first_0 + (_5_or_0_after_first_0 - first_0 - 1) else: ans = n - 1 if first_5 >= 0 and _2_or_7_after_first_5 >= 0: ans = min(ans, _2_or_7_after_first_5 - 1 # (first_5) + (_2_or_7_after_first_5 - first_5 - 1) ) return ans
Last Updated on 2023/09/10 by A1go