Restore IP Address

题目描述

解题方法

这种要求所有解的一般都是dfs+backtracking

现在的选择

  • 前三位数可以选择

选择的限制

  • 要小于255
  • 不能有连续的0

结束条件

  • 完成了4个部分
  • 并且string都用完了

Solution

class Solution(object):
    def restoreIpAddresses(self, s):
        """
        :type s: str
        :rtype: List[str]
        """
        result = []
        self.dfs(s, result, 0, "")

        return result

    def dfs(self, s, result, part, cur_str):
        if part == 4:
            if s == "": # 应该放在下面,这样part==4就退出了
                result.append(cur_str[1:])
            return
        else:
            for i in range(1, 4): # try first 3 chars
                if i <= len(s):
                    if int(s[:i]) <= 255:
                        self.dfs(s[i:], result, part+1, cur_str+"."+s[:i])
                    else:
                        break
                    if s[0] == "0": # 0 can only be 0
                        break

Reference