93. 复原IP地址

Medium

思路

不同类型的题目还是要反复做一做,太久没有做回溯的题,这道题做的时候稍微就有点费劲了

以上,尝试写一下代码,AC!

代码

python3

class Solution:
    def helper(self, s, start, cnt, path, res):
      if cnt > 4:
        return
      elif cnt == 4:
        if start == len(s):
          res.append('.'.join(path))
        return
      for i in range(1,4):
        if start+i > len(s):
          break
        sub = s[start:start+i]
        if len(sub) > 1 and sub.startswith('0'):
          return
        if int(sub) > 255:
          return
        path.append(sub)
        self.helper(s,start+i, cnt+1, path, res)
        path.pop()

    def restoreIpAddresses(self, s: str) -> List[str]:
      res = []
      self.helper(s, 0, 0, [], res)
      return res