获取所有可能的字符串分区,其中每个分区都是回文

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']]运行你的代码有变化。