2 回答
TA贡献1799条经验 获得超8个赞
python 通过引用传递参数,以便path
您附加到ans
和path.pop()
是对象
您需要复制给回溯的路径对象(path.copy()
在 py3 中,path[:]
在 py2 中):
self.backtrack(path.copy(), s[i:]) ^^^^^^^^^^^
TA贡献1111条经验 获得超0个赞
您应该通过返回值来跟踪解决方案的状态。
当找到解决方案时,您返回True并停止回溯。
聚苯乙烯
您可以将该方法转换为静态方法,因为答案与对象状态无关Solution,从而能够使用不同线程解决多个问题。
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:
self.ans = path
return True
if s == "" or len(path) >= 4:
return False
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])
if self.backtrack(path, s[i:]):
return True
path.pop()
a = Solution()
# ['255', '255', '11', '135']
print(a.restore_ip("25525511135"))
添加回答
举报