class Solution: def partition(self, s: str) -> List[List[str]]: res = [] cur = []
def ishuiwen(start, end): while start <= end: if s[start] != s[end]: return False start += 1 end -= 1 return True
def backtrack(start): if start == len(s): res.append(cur[:]) return for i in range(start, len(s)): if ishuiwen(start, i): cur.append(s[start:i+1]) backtrack(i+1) cur.pop()
class Solution: def restoreIpAddresses(self, s: str) -> List[str]: res = [] cur = []
def isvad(subs): num = int(subs) if num == 0 and len(subs) == 1: return True if num == 0 and len(subs) > 1: return False elif subs[0] == '0': return False elif num > 255: return False else: return True def backtrack(start): if start == len(s) and len(cur) == 4: res.append(".".join(cur)) return if len(cur) > 4: return for i in range(start, min(start + 3, len(s))): if isvad(s[start:i+1]): cur.append(s[start:i+1]) backtrack(i+1) cur.pop() backtrack(0) return res