我一直在尝试使用回溯来解决这个问题,但在跟踪找到的答案方面遇到了问题。
我的代码:
class Solution:
def restore_ip(self, s):
self.ans = []
self.backtrack([], s)
return self.ans
def backtrack(self, path, s):
if s == "" and len(path) == 4:
#print(self.ans)
self.ans.append(path)
#print(self.ans)
return
if s == "" or len(path) >= 4:
return
for i in range(1, len(s)+1):
if i > 3:
break
if int(s[:i]) > 255:
break
if i != 1 and s[0] == 0:
break
path.append(s[:i])
self.backtrack(path, s[i:])
path.pop()
a = Solution()
print(a.restore_ip("25525511135"))
当我尝试运行此代码时,它输出以下内容:[[], []];但我预料到了这一点[['255', '255', '11', '135'], ['255', '255', '111', '35']]:当我取消注释代码中的两个 print() 时,它输出以下内容:
[['255', '255', '11', '135']]
[['255', '255', '111', '35'], ['255', '255', '111', '35']]
[[], []]
由此我推断我的逻辑总体上是正确的,但存储在类ans变量中的答案Solution不知何故搞砸了。
有人可以帮我解决这个问题吗?
感谢,并有一个愉快的一天!
守着星空守着你
catspeake
相关分类