获取所有可能的字符串分区,其中每个分区都是回文
Get all possible string's partitions in which each partition is a palindrome
我很难调试我在这里犯的错误
给定一个字符串 s,对 s 进行分区,使得分区的每个字符串都是回文。 Return s 的所有可能的回文划分。例如,给定 s = "aab", Return [ ["a","a","b"] ["aa","b"] , ]
def ispalindrome(self,s,i,j):
while (i < j):
if (s[i] != s[j]):
return False
i+=1
j-=1
return True
def helper(self,i,current,s,ans):
if(i==len(s)):
ans.append(current)
return
for j in range(i,len(s)):
if(self.ispalindrome(s,i,j)):
current.append(s[i:j+1])
self.helper(j + 1, current, s, ans)
current.pop()
def partition(self, A):
current=[]
ans=[]
self.helper(0, current, A, ans)
return ans
通过调用分区函数这个 returns 一个空列表不知道为什么,
任何帮助将不胜感激
你可以通过更改得到你想要的结果:
ans.append(current)
收件人:
ans.append(current[:])
或:
ans.append([] + current)
我认为问题在于您将列表 current
附加到 ans
并且在代码的其他地方,您弹出了 current
中的值(这影响了您的列表已存储在 ans
).
通过附加列表切片,current[:]
,它是 current
列表的副本,而不是列表本身:-)
第二种解决方案的作用与第一种相同。它将新列表地址 []
附加到 ans
并将 current
中的值连接到新地址。
我得到了结果[['a', 'a', 'b'], ['aa', 'b']]
运行你的代码有变化。
我很难调试我在这里犯的错误
给定一个字符串 s,对 s 进行分区,使得分区的每个字符串都是回文。 Return s 的所有可能的回文划分。例如,给定 s = "aab", Return [ ["a","a","b"] ["aa","b"] , ]
def ispalindrome(self,s,i,j):
while (i < j):
if (s[i] != s[j]):
return False
i+=1
j-=1
return True
def helper(self,i,current,s,ans):
if(i==len(s)):
ans.append(current)
return
for j in range(i,len(s)):
if(self.ispalindrome(s,i,j)):
current.append(s[i:j+1])
self.helper(j + 1, current, s, ans)
current.pop()
def partition(self, A):
current=[]
ans=[]
self.helper(0, current, A, ans)
return ans
通过调用分区函数这个 returns 一个空列表不知道为什么, 任何帮助将不胜感激
你可以通过更改得到你想要的结果:
ans.append(current)
收件人:
ans.append(current[:])
或:
ans.append([] + current)
我认为问题在于您将列表 current
附加到 ans
并且在代码的其他地方,您弹出了 current
中的值(这影响了您的列表已存储在 ans
).
通过附加列表切片,current[:]
,它是 current
列表的副本,而不是列表本身:-)
第二种解决方案的作用与第一种相同。它将新列表地址 []
附加到 ans
并将 current
中的值连接到新地址。
我得到了结果[['a', 'a', 'b'], ['aa', 'b']]
运行你的代码有变化。