可以认为是动态规划 对于长度大于等于3 的输入str 我们先拆出str[0]单独成整数, 再看能否拆前两位,即str[0:2]单独成整数 要求str[0]!=‘0’ 再看能否拆前三位,即str[0:3]单独成整数 要求str[0]!=‘0’ and int(str[0:3]) <= 255
上述任意种情况可以的话 搞一个tempres,把各自的整数对应的str和一个’.'放到tempres里
当tempres中有4个点,且tempres没在以前的结果中出现过 即可将tempres[:-1]放到最终的res数组中
class Solution: def __init__(self): self.res = [] def restoreIpAddresses(self, s: str) -> List[str]: self.fun(s,'',0) return self.res def fun(self,input_str,this_res,point): if point == 4: if len(input_str) > 0: return else: if this_res[:-1] not in self.res: self.res.append(this_res[:-1]) return if input_str == '': return this_res0 = '' this_res1 = '' this_res2 = '' for letter in this_res: this_res0 += letter this_res1 += letter this_res2 += letter this_res2 += (input_str[0]+'.') self.fun(input_str[1:],this_res2,point+1) if input_str[0] != '0': this_res1 += (input_str[0:2]+'.') self.fun(input_str[2:],this_res1,point+1) if int(input_str[0:3]) <= 255: this_res0 += (input_str[0:3]+'.') self.fun(input_str[3:],this_res0,point+1)