# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param s string字符串 # @return string字符串一维数组 # class Solution: def restoreIpAddresses(self , s: str) -> List[str]: # write code here res=[] segements=[] slen=len(s) def backtrack(s,start:int ,segements:list ,res:list): k=len(segements) if k==4 and start==slen: #print("add",segements) res.append(segements[0]+"."+segements[1]+"."+segements[2]+"."+segements[3]) return # 剪枝 if k>4 or start>=slen: return # # 剪枝 // 剪枝:剩余的字符数必须满足 [4-k, 3*(4-k)] 区间 # remaing=slen-k #剩余长度 # # if remaing<4-k or remaing> 3*(4-k): # # return # 遍历每段3中情况,即三种长度 : 1, 11,111 for end in range(1,4): sub_str=s[start:start+end] #print(sub_str) #剪枝 有前导0 或者超出255 if (len(sub_str)>1 and sub_str[0]=='0') or int(sub_str)>255: break segements.append(sub_str) backtrack(s,start+end,segements,res) segements.pop() backtrack(s,0,segements,res) return res