leetcode-131分割回文串

    技术2022-07-11  71

    class Solution { public: vector<vector<string>>result; vector<string>temp_str; bool isPalindrome(string substr) { int left = 0, right = substr.size() - 1; while(left < right) { if (substr[left++] != substr[right--]) { return false; } } return true; } void recursion(string s, int left, int right) { // 递归终止条件 到字符串末尾了 且每一个都是回文的 将本次结果保存下来 if(left > right) { result.push_back(temp_str); return; } // 从index为left开始截取长度为1,2,3的子串进行验证 成功则用剩下的部分递归 for(int i = 1; i <= right - left + 1; i++) { if(isPalindrome(s.substr(left, i))) { temp_str.push_back(s.substr(left, i)); recursion(s, left + i, right); temp_str.pop_back(); } } } vector<vector<string>> partition(string s) { recursion(s, 0, s.size() - 1); return result; } };
    Processed: 0.011, SQL: 9