zoukankan      html  css  js  c++  java
  • 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;
        }
    };
  • 相关阅读:
    第二周教学设计反思
    uni-app,一套代码应用在多个平台
    新CMS
    学习js
    关于数据库
    自己写的一段jquery实现当滚动条滑动到某个位置实现向中间移动
    js平滑滚动到顶部、底部、指定地方
    统一一个帝国中搜索页面的模板
    帝国CMS的总结
    回到顶部的功能
  • 原文地址:https://www.cnblogs.com/skysand/p/4039063.html
Copyright © 2011-2022 走看看