给你一个字符串 s,请你将 _s _分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。
    回文串 是正着读和反着读都一样的字符串。

    分析:本题要分割成一个个回文子串,那么肯定要有一个函数来判断是否是回文子串,如参考代码最后一个函数所示,之后由于题目要返回所有可能的分割方案,那么就要只能使用回溯算法,不然就是暴力解法?
    这之后使用回溯算法的套路从之前的数组变成了字符串,其实差别不大,注意在代码递归前判断一下是否当前子串是回文串即可

    参考代码:
    public List> partition(String s) {
    sup(s,0);
    return ret;
    }
    List> ret = new ArrayList<>();
    LinkedList path = new LinkedList<>();
    private void sup(String s,int startindex){
    if(startindex>=s.length()){
    ret.add(new ArrayList<>(path));
    return;
    }
    for(int i=startindex;i//判断当前子串是否是回文串
    if(!ispartition(s,startindex,i)){
    continue;
    }
    path.add(s.substring(startindex,i+1));
    sup(s,i+1);
    path.removeLast();
    }
    }
    private boolean ispartition(String s,int start,int end){
    for(int i=start,j=end;i if(s.charAt(i)!=s.charAt(j)) return false;
    }
    return true;
    }