题目:
给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。
有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 '.' 分隔。
示例:
输入: "25525511135"
输出: ["255.255.11.135", "255.255.111.35"]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/restore-ip-addresses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
答案:
时间:
20 min
class Solution:
def restoreIpAddresses(self, s: str) -> List[str]:
n=len(s)
pos=set()
def dfs(i,temps,num,count):
if num!="" and int(num) > 255:return
if len(num)==2 and num[0]=="0":return
if count==4:return
if i==n:
if temps not in pos and count==3 and temps[0]!=".":
ans.append(temps)
pos.add(temps)
return
if num=="" or int(num)<=255:
dfs(i+1,temps+s[i],num+s[i],count)
dfs(i+1,temps+"."+s[i],s[i],count+1)
else:
dfs(i+1,temps+"."+s[i],s[i],count+1)
ans=[]
dfs(0,"","",0)
return ans
要点:
1. 这题搞呀
终结条件无数个:0-255 之间,010这种也不行,小数点一定要3个,不能重复,开头没有小数点。