首页 > 代码库 > Palindrome Partitioning
Palindrome Partitioning
又写完了一道,好开心,洗澡睡觉去~~~明天再看答案好了~
时间只要花在了
// 进行下一次前,先将上次加入palindrome的string删掉 if(!palindrome.empty()) palindrome.erase(palindrome.end()-1);
这句话的位置上,应该是当加入一次,进行完递归之后,将其删除。
class Solution {public:// 用递归的思想// 用tmp记录字符串子串,如果tmp是回文的,则递归判断剩下的是否也是回文的,如果判断到字符串结尾,则将得到的回文vector加入到总的vector里vector<string> palindrome;vector<vector<string> > palindromes; vector<vector<string>> partition(string s) { recurPart(s, 0); return palindromes; } void recurPart(string s, int begin){ if(begin == s.size()) { palindromes.push_back(palindrome); return; } for(int i = begin; i != s.size(); ++i){ string tmp = s.substr(begin, i - begin + 1); // 如果tmp是回文的,则将其加入到palindrome里,再递归 if(isPalindrome(tmp)){ palindrome.push_back(tmp); recurPart(s, i + 1); // 进行下一次前,先将上次加入palindrome的string删掉 if(!palindrome.empty()) palindrome.erase(palindrome.end()-1); } } } bool isPalindrome(string &tmp){ string sTmp = ""; for(int i = tmp.size() - 1; i >= 0; --i){ sTmp += tmp[i]; } if(sTmp.compare(tmp) == 0) return true; return false; }};
Palindrome Partitioning
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。