647. Palindromic Substrings

最大回文串
正好讓我回顧一下DP,動(dòng)態(tài)規(guī)劃比較經(jīng)典的題目

Output: 3
Explanation: Three palindromic strings: "a", "b", "c".
Input: "aaa"
Output: 6
Explanation: Six palindromic strings: "a", "a", "a", "aa", "aa", "aaa".

總之就是一個(gè)線性規(guī)劃的問題,注意遞歸條件:

if (s[start] = s[end] and (dp[start+1][end-1] or end-start<3)):
      dp[start][end] = 1
    def countSubstrings(self, s):
        """
        :type s: str
        :rtype: int
        """
        count = 0
        l = len(s)
        dp = [[0 for i in range(l)]for i in range(l)]
        if len(s) == 0:
            return count
        for end in range(0,len(s)):
            dp[end][end] = 1
            count += 1
            for start in range(0,end):
                if s[start] == s[end] and (dp[start+1][end-1] or end-start<3):
                    dp[start][end] = 1
                    count += 1
        
        return count

另附一開始的辦法,直接reverse翻轉(zhuǎn)字符串比較,對(duì)的就+1,注意str沒有reverse,直接用切片操作:

    def countSubstrings(self, s):
        """
        :type s: str
        :rtype: int
        """
        count = 0
        str1 = ''
        str2 = ''
        if len(s) == 0:
            return count
        for i in range(0,len(s)):
            for j in range(i+1,len(s)+1):
                    str1 = s[i:j]
                    str2 = str1[::-1]
                    if str1 == str2:
                        count +=1
                    str1 = []
                    str2 = []
                
        return count
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容