93.复原IP地址
完全的复杂掉了,没什么头绪,用之前的套路难以完全实现,这里重新缕一缕思路。
首先想好怎么处理数字字符串,因为ip地址的形式是“xxx.xxx.xxx.xxx”,因此数组self.out中获取四个数,然后使用'.'.join连接成字符串,加入到res数组中即可,每一次获取的数可以是1-3位不等,因此每一次的range应该是从start位置开始到字符串结束,或者到start的后3位。
之后是判断合法ip的逻辑,首先每次加入out数组的数属于0-255;其次,首位为0时,那么长度一定为1;且每次获得的s的长度不能为0或大于3。经过上述检验就是合法ip段。
class Solution: def restoreIpAddresses(self, s: str) -> List[str]: self.out = [] self.res = [] self.backtrack(0, s) return self.res def backtrack(self,start,s): if len(self.out) == 4: if start == len(s): self.res.append('.'.join(self.out)) return for i in range(start,min(le