def backtrack(res, result, start, times):
if times == 4 and start == len(s):
res.append(result)
return
for i in range(start, len(s)):
num = s[start:i + 1]
if num[0] == "0" and len(num) > 1 or int(num) < 0 or int(num) > 255: continue
if times >= 4: break
resulted = result
if result: result += "."
result += num
backtrack(res, result, i + 1, times + 1)
result = resulted
res = []
backtrack(res, "", 0, 0)
return res
LeetCode.78 子集
def backtrack(res, result, start):
for i in range(start, len(nums)):
result.append(nums[i])
res.append(list(result))
backtrack(res, result, i+1)
result.pop()
res = [[]]
backtrack(res, [], 0)
return res
LeetCode.90 子集II
nums.sort()
def backtrack(res, result, start):
for i in range(start, len(nums)):
if i - start > 0 and nums[i] == nums[i-1]: continue
result.append(nums[i])
res.append(list(result))
backtrack(res, result, i+1)
result.pop()
res = [[]]
backtrack(res, [], 0)
return res