题目大意:
找出字符串s所有子串划分,子串划分满足每个子串都是回文串。
解法:
采用深度优先遍历。
java:
class Solution { void helper(String s,int index,List<List<String>>res,List<String>tmp){ if(index==s.length()){ res.add(new ArrayList<>(tmp)); return; } for(int i=index+1;i<=s.length();i++){ if(isRight(s,index,i)){ tmp.add(s.substring(index,i)); helper(s,i,res,tmp); tmp.remove(tmp.size()-1); } } } boolean isRight(String s,int start,int end){ if(start>=end) return false; end--; while(start<end){ if(s.charAt(start)!=s.charAt(end)) return false; start++; end--; } return true; } public List<List<String>> partition(String s) { List<List<String>>res=new ArrayList<>(); List<String>tmp=new ArrayList<>(); helper(s,0,res,tmp); return res; } }
leetcode [131]Palindrome Partitioning
原文:https://www.cnblogs.com/xiaobaituyun/p/10716009.html