可以认为是动态规划
对于长度大于等于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)