131. 分割回文串

给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。

回文串 是正着读和反着读都一样的字符串。

示例 1:

输入:s = "aab"
输出:[["a","a","b"],["aa","b"]]

示例 2:

输入:s = "a"
输出:[["a"]]

提示:

  • 1 <= s.length <= 16
  • s 仅由小写英文字母组成

bool isCheck(string str)

    {

        int left=0;

        int right=str.size()-1;

        while(left

        {

            if(str[left] !=  str[right])

            {

                return false;

            }

            left++;

            right--;

        }

        return true;

    }

    vector>ret;

    void find(string &s,vector&vec,int cur)

    {

        string str1="";

        for(int i=0;i

        {

            str1+=vec[i];

        }

        if(str1==s)

        {

            ret.push_back(vec);

            return;

        }

        for(int i=cur;i

        {

            string str="";

            str= s.substr(cur,i-cur+1);

            if(isCheck(str))

            {

                vec.push_back(str);

                find(s,vec,i+1);

                vec.pop_back();

            }

        }

    }

    vector> partition(string s) {

        vectorvec;

        find(s,vec, 0);

        return ret;

    }

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