leetcode 分割回文串 java

我对回溯题还是不清楚,尤其是还原现场这部分。
这道题是从答案角度出发,考虑如何分割。参考Leetcode的解题。

在这个回溯过程中:

  1. 每走一步,对于每个逗号,有两个选项:要么不选它,要么选它。每个选项就像是在树上走一个分支。
  2. 但是我们一次只能处理一个分支,计算完了【不选】的分支,就要倒回去,回到前面去处理另外一个【选】的分支。倒回去之前加到 path 中的数据是垃圾数据,要及时清除掉。
class Solution {
    private final List> ans = new ArrayList<>();
    private final List path = new ArrayList<>();
    private String s;

    public List> partition(String s) {
        this.s =s;
        dfs(0);
        return ans;
    }

    private void dfs(int i){
        if(i==s.length()){
            ans.add(new ArrayList<>(path));
            return;
        }

        //i为子串开始的位置,j为子串结束的位置
        for(int j=i; j

你可能感兴趣的:(leetcode,java,算法)