Palindrome Partitioning
class Solution { public: bool partition_s(string s){ if (s.empty()){ return palin_m; } for(size_t i = 0; i < s.size(); i++){ palin_v.push_back(s.substr(i,1)); } palin_m.push_back(palin_v); vector<string> temp; while(1){ string element = palin_v[0]; bool mark1 = false,mark2 = false; for(iter_v = palin_v.begin(); iter_v != palin_v.end(); iter_v++){ if (*iter_v == element){ temp.push_back(element + *iter_v); temp.push_back(iter_v + 1,palin_v.end()); palin_m.push_back(temp); temp.erase(iter_v,palin_v.end()); temp.push_back(*iter_v); mark1 = true; }else{ temp.push_back(element); } element = *iter_v; } temp.clear(); if (palin_v.size() < 3){ break; } element = palin_v[0]; for(size_t i = 2; i < palin_v.size(); i += 2){ if (palin_v[i] == element && !mark2){ temp.push_back(element + palin_v[i -1] + palin_v[i]); mark = true; break; } element_0 = palin_v[i - 1]; } } } vector<vector<string>> partition(string s) { // Start typing your C/C++ solution below // DO NOT write int main() function
palin_m.clear();
palin_v.clear();
partition_s(s);
return palin_m
} vector<string> palin_v; vector<string>::iterator iter_v; vector<vector<string>> palin_m; };