//dfs
class Solution {
public List<List<String>> partition(String s) {
List<List<String>> resultList = new ArrayList<>();
if(s == null || s.length() == 0) return resultList;
List<String> result = new ArrayList<>();
int start = 0;
helper(s, result, resultList, start);
return resultList;
}
private void helper(String s, List<String> result, List<List<String>> resultList, int start) {
//出口在 如果遍历到了最后一位 那就加入list里面
if(start == s.length()) {
resultList.add(new ArrayList<>(result));
return;
}
//利用for循环拿到每一层的substring 存入result
for(int i = start; i < s.length(); i++) {
String sub = s.substring(start, i + 1);
if(isPalindrome(sub)) {
result.add(sub);
helper(s, result, resultList, i + 1);
result.remove(result.size() - 1);
}
}
}
//判断选取的substring是不是回文的方法;
private boolean isPalindrome(String sub) {
int start = 0;
int end = sub.length() - 1;
while(start < end) {
if(sub.charAt(start) == sub.charAt(end)) {
start++;
end--;
} else {
return false;
}
}
return true;
}
}
Palindrome Partitioning java 走地牙
最新推荐文章于 2021-05-06 12:59:12 发布