Кисть названия LeetCode нота - возвраты - Сегментация палиндромическая последовательность

Тема Описание:

Получая строку s, s делится на ряд подгрупп строк, каждая подстрока является строка палиндром.

S вернуть все возможные схемы разделения.

Пример:

输入: "AAB"
输出:
[
[ "аа", "б"],
[ "а", "а", "б"]
]

Источник: остаться кнопка (LeetCode)
ссылка: https: //leetcode-cn.com/problems/palindrome-partitioning

Проблема решения идеи:

1, по-видимому, возвраты: сделать все возможные исходы и результатом является List <List <>> типа.

2, так что этот вопрос и искать подмножество очень похож на каждое своем собственное знание, чтобы быть судья не является строка палиндрома.

3, отметим, что функция определяется с использованием обратного huisu (INT начала Int конца, String цель) для облегчения обработки строки

Java-код для достижения следующих

1  // 回文字符判断
2      общественного  булево isPalindrome (String с, INT начало, ИНТ конец) {
 3 ,          а (начало < конец) {
 4 ,              если (s.charAt (старт)! = S.charAt (конец))
 5                  возврата  ложь ;
6              начать ++ ;
7              end-- ;
8          }
 9          возврата  истинно ;
10      }
 11  
12      общественности List <List <String >> раздел (String s) {
 13          //求出所有子集
 14          // 判断是不是回文
15          List <List <String >> результат = новый ArrayList <> ();
16          List <String> Темп = новый ArrayList <> ();
17          часть (результат, темп, с, 0 );
18          возврата результата;
19      }
 20  
21      общественная  аннулируются часть (List <List <String >> результат List <String> Темп, String s, Int начинаются) {
 22 ,          если (начало == s.length ()) {
 23              result.add ( новый ArrayList (температура));  //Нужно сначала подать заявку на память, в противном случае это ссылка на добавленный результат возвращается пустой. 
24-              возврат ;   // обработка завершена , мы должны вернуться! ! ! 
25          }
 26          для ( INT I = Бегин; I <s.length (); я ++ ) {
 27              ЕСЛИ (isPalindrome (S, то начала я)) {
 28                  temp.add (s.substring (Бегина, I + 1. )) ;
 29                  Часть (Результат, ТЕМП, S, I + 1. );
 30                  temp.remove (temp.size () - 1. );
 31              } 
34          }

 

   

 

рекомендация

отwww.cnblogs.com/sqchao/p/11070140.html