赞
踩
class Solution { //存放最终结果 List<List<String>> res = new ArrayList<>(); //存放每次的结果 Deque<String> path = new ArrayDeque<>(); public List<List<String>> partition(String s) { //对空串判断 if(s.length() == 0){ return res; } //回溯处理 backtracking(s,0); //返回结果 return res; } public void backtracking(String s,int index){ //结束条件判断 if(index >= s.length()){ //将符合条件的path加入最终结果res res.add(new ArrayList(path)); return; } //for循环遍历字符串s for(int i = index;i < s.length();i++){ //回文串判断 if(isPalindrome(s,index,i)){ //截取符合条件的字串 String str = s.substring(index,i + 1); path.addLast(str); }else{ continue; } //递归 backtracking(s,i + 1); //回溯,撤回上一步操作 path.removeLast(); } } public boolean isPalindrome(String s,int i,int j){ while(i < j){ if(s.charAt(i) != s.charAt(j)){ return false; } i++; j--; } return true; } } // //模板 // public void backtracking(参数){ // if(终止条件){ // 保存结果; // return; // } // for(遍历字符串){ // 处理节点; // backtracking(); // 撤销上次操作; // } // }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。