Получить все возможные строковые разделы, в которых каждый раздел является палиндромом - PullRequest
0 голосов
/ 01 января 2019

Мне трудно отладить ошибку, которую я здесь делаю

Учитывая строку s, раздел s такой, что каждая строка раздела является палиндромом.Вернуть все возможные палиндромные разбиения s.Например, если s = "aab", вернуть [["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

, вызвав функцию разделенияэто возвращает пустой список, не знаю почему, любая помощь будет оценена

1 Ответ

0 голосов
/ 02 января 2019

Вы можете получить желаемые результаты, изменив:

ans.append(current)

Кому:

ans.append(current[:])

Или:

ans.append([] + current)

Я думаю, проблема заключалась в том, что вы добавляли список current к ans, а в других местах вашего кода вы отбрасывали значения в current (что повлияло на списоквы сохранили в ans).

Добавляя фрагмент списка, current[:], это своего рода копия списка current, а не сам список: -)

Второе решение действует так же, как первое.Он добавляет новый адрес списка, [], к ans и объединяет значения от current к новому адресу.

Я получил результаты [['a', 'a', 'b'], ['aa', 'b']] выполнения вашего кода с изменением.

...