Cracking the Safe LeetCode solution in Python
1# Runtime: 121 ms (Top 27.97%) | Memory: 27.9 MB (Top 17.84%)2class Solution:3def crackSafe(self, n: int, k: int) -> str:4seen = set()56def dfs(s, last_n):7if len(seen) == (k**n):8return s9if (10len(last_n) < n11): # If len<n,keep adding zeros as and valid string can be returned12if len(s + "0") == n:13seen.add(s + "0")14ans = dfs(s + "0", last_n + "0")15return ans16ans = None17for i in range(k):18new = last_n[1:] + str(i)19if new not in seen:20seen.add(new)21ans = dfs(s + str(i), new)22if ans:23return ans24seen.remove(new)2526return dfs("", "")