Leetcode 题解 - 回溯-分割
1. 分割回文串1
- Palindrome Partitioning (Medium)
Leetcode / 力扣
# 递归def partition(self, s: str) -> List[List[str]]: def backtrack(s, path_tmp): if not s: res.append(path_tmp) return for i in range(1, len(s) + 1): if s[:i] == s[:i][::-1]: backtrack(s[i:], path_tmp + [s[:i]]) res = [] backtrack(s, []) return res
2. 复原IP地址
- Restore IP Addresses (Medium)
Leetcode / 力扣
# 递归def restoreIpAddresses(self, s: str) -> List[str]: res = [] n = len(s) def backtrack(i, tmp, flag): if i == n and flag == 0: res.append(tmp[:-1]) return if flag < 0: return for j in range(i, i+3): if j < n: if i == j and s[j] == '0': backtrack(j+1, tmp + s[j] + '.', flag-1) break if 0 < int(s[i:j+1]) <= 255: backtrack(j+1, tmp + s[i:j+1] + '.', flag-1) backtrack(0, '',4) return res