这个题,很容易想到用回溯。只要小心翼翼别出错就好了。
题目:
复原IP地址
Category Difficulty Likes Dislikes
algorithms Medium (46.97%) 296 -
Tags
string | backtracking
给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。
有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 '.' 分隔。
示例:
输入: "25525511135"
输出: ["255.255.11.135", "255.255.111.35"]
Discussion | Solution
好了,backtracking
code:
class Solution:
def restoreIpAddresses(self, s: str) -> List[str]:
self.ret = []
def backtrace(s, res, k):
if len(s) > 3*k or len(s)<k:
return
if k==1:
if int(s) > 255 or (len(s)>1 and int(s[0])==0):
return
res.append(s)
a = '.'
self.ret.append(a.join(res))
res.pop()
return
for i in range(3):
if int(s[:i+1]) > 255 or (i!=0 and int(s[0])==0):
continue
res.append(s[:i+1])
backtrace(s[i+1:], res, k-1)
res.pop()
return
backtrace(s, [], 4)
return self.ret
return!