题意以及限制条件
-
题目:
-
限制条件:
想到的所有可能解法
-
Ways_1——回溯
- 时间复杂度——O(n);空间复杂度——O(n)。
对应的代码
- Ways_1
class Solution {
public List<List<String>> partition(String s) {
List<List<String>> list = new ArrayList<List<String>>();
backtrack(list, new ArrayList<String>(), s, 0);
return list;
}
private static void backtrack(List<List<String>> list, List<String> templist, String s, int start) {
int len = s.length();
if (start == len) {
list.add(new ArrayList<String>(templist));
} else {
for (int i = start; i < len; ++i) {
if (isPalindrome(s, start, i)) {
templist.add(s.substring(start, i + 1));
backtrack(list, templist, s, i + 1);
templist.remove(templist.size() - 1);
}
}
}
}
private static boolean isPalindrome(String s, int left, int right) {
while (left < right) {
if (s.charAt(left++) != s.charAt(right--)) {
return false;
}
}
return true;
}
}