给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。
返回 s 所有可能的分割方案。
示例:
输入: "aab" 输出: [ ["aa","b"], ["a","a","b"] ]DFS来写,先递归到最底层也就是一个字母一个字母的来判断,再回溯即可
class Solution { public: vector<vector<string>> partition(string s) { vector<vector<string>>vec; vector<string>out; partitiondfs(s,0,out,vec); return vec; } void partitiondfs(string s,int start,vector<string>&out,vector<vector<string>>&vec) { if(start==s.size()) { vec.push_back(out); return ; } for(int i=start;i<s.size();i++) { if(ispar(s,start,i)) { out.push_back(s.substr(start,i-start+1)); partitiondfs(s,i+1,out,vec); out.pop_back(); } } } bool ispar(string s,int start,int end) { while(start<end) { if(s[start]!=s[end]) return false; else start++,end--; } return true; } };
Leetcode 131. 分割回文串 DFS
最新推荐文章于 2025-01-22 20:00:00 发布