首页 > 其他 > 详细

回溯---分割字符串使得每个部分都是回文数

时间:2019-07-01 15:57:13      阅读:97      评论:0      收藏:0      [点我收藏+]

分割字符串使得每个部分都是回文数

131. Palindrome Partitioning (Medium)

For example, given s = "aab",
Return

[
  ["aa","b"],
  ["a","a","b"]
]

题目描述:

给定一个字符串,将其分割成回文串,并返回所有的分割结果。

思路分析:

求子串问题,也可以用到回溯思想,我们只需要判断分割出来的字符串是否是回文,如果是回文就添加到结果中。

代码:

public List<List<String>>partition(String s){
    List<List<String>>res=new ArrayList<>();
    List<String>list=new ArrayList<>();
    doPartition(s,res,list);
    return res;
}
public void doPartition(String s,List<List<String>>res,List<String>list){
    if(s.length()==0){
        res.add(new ArrayList<>(list));
        return;
    }
    for(int i=0;i<s.length();i++){
        if(isPalindrome(s,0,i)){ //判断是否为回文
            list.add(s.substring(0,i+1));
            doPartition(s.substring(i+1),res,list);
            list.remove(list.size()-1);
        }
    }
}
public boolean isPalindrome(String s,int start,int end){
    while(start<end){
        if(s.charAt(start++)!=s.charAt(end--))
            return false;
    }
    return true;
}

回溯---分割字符串使得每个部分都是回文数

原文:https://www.cnblogs.com/yjxyy/p/11114261.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!