您的位置:首页 > 其它

Palindrome Partitioning

2015-06-11 11:30 246 查看
正常dfs

public class Solution {
public ArrayList<ArrayList<String>> partition(String s) {
ArrayList<ArrayList<String>> res = new ArrayList<ArrayList<String>>();
if(s==null||s.length()==0) return res;
ArrayList<String> item  = new ArrayList<String>();
dfs(s, 0, item, res);
return res;
}
private void dfs(String s, int start, ArrayList<String> item , ArrayList<ArrayList<String>> res ){
if(start==s.length()){
res.add(new  ArrayList<String>(item));
return;
}
for(int i=start;i<s.length();i++){
String tmp = s.substring(start,i+1);
if(isPalindrome(tmp)){
item.add(tmp);
dfs(s,i+1,item,res);
item.remove(item.size()-1);
}
}
}
private boolean isPalindrome(String t){
if(t==null||t.length()<2) return true;
int low=0, high=t.length()-1;
while(low<high){
if(t.charAt(low)!=t.charAt(high))
return false;
low++;
high--;
}
return true;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: