思路
利用dfs算法,用ids表示当前所指向字符的位置,依次判断s.charAt(ids),s.charAt(ids)+s.charAt(ids+1)…是否为回文字符串,如果是则加入链表p,再递归调用dfs函数
解题过程
每次调用dfs函数后记得还原现场
Code
class Solution {public String ss;public int len;public List<List<String>> list=new ArrayList<>();public List<List<String>> partition(String s) {ss=s;len=s.length();List<String> p=new ArrayList<>();dfs(p,0);return list;}public void dfs(List<String> p,int ids){if(ids==len){list.add(new ArrayList(p));return;}String t="";for(int i=ids;i<len;i++){t+=ss.charAt(i);if(isTrue(t)){p.add(t);dfs(p,i+1);p.remove(p.size()-1);}}}public boolean isTrue(String str) {int len = str.length();for (int i = 0; i < len / 2; i++) {if (str.charAt(i) != str.charAt(len - 1 - i)) {return false;}}return true;}}作者:菜卷
链接:https://leetcode.cn/problems/palindrome-partitioning/solutions/2903400/fen-ge-hui-wen-chuan-by-ashi-jian-chong-bap36/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。