131. Palindrome Partitioning(递归)

Given a string s, partition s such that every substring of the partition is a palindrome.

Return all possible palindrome partitioning of s.

For example, given s = "aab",
Return

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

]

翻译:

将一个字符串进行分割,使得其所有的子字符串均为回文字符串,返回其所有的分割结果。

分析:

本题用递归即可,不过这个递归稍微有些复杂。还需要写一个判断字符串是否为回文字符串的函数。每次都将一个字符放到字符串temp里,判断temp是否为回文字符,如果该字符串是回文字符串,那么将该字符串放到result里,并且进行下一次递归。当位置i>=s.size()时,将result的结果加入到results里。有一个需要额外注意的地方,在每次递归结束之后,需要将result进行还原,具体可以结合代码进行理解。

ac代码:

class Solution { public:     vector<vector<string>> partition(string s) {         vector<vector<string>>results;         vector<string>result;         int i,L=s.size();         if(L==0)             return results;         ps(results,result,s,L,0);         return results;     }     void ps(vector<vector<string>>&results,vector<string>&result,string s,int L,int index)     {        // int i;         string str;         if(index>=L)         {             results.push_back(result);             return;         }        while(index<L)         {             str+=s[index];             index++;             if(judge(str))             {                 result.push_back(str);                 ps(results,result,s,L,index);                 result.pop_back();             }         }     }     bool judge(string s)     {         int i,L=s.length();         for(i=0;i<L/2;i++)         {             if(s[i]!=s[L-i-1])                 return false;         }         return true;     } };

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值