摘要:示例輸入輸出解釋三個回文子串示例輸入輸出說明個回文子串注意輸入的字符串長度不會超過。解答這一題可以用窮舉法,檢查是否為回文字串但是應(yīng)該會超時。設(shè)置表示是否是回文字串,若是為,否則為。
題目地址:
https://leetcode-cn.com/probl...
題目描述:
給定一個字符串,你的任務(wù)是計算這個字符串中有多少個回文子串。
具有不同開始位置或結(jié)束位置的子串,即使是由相同的字符組成,也會被計為是不同的子串。
示例 1:
輸入: "abc"
輸出: 3
解釋: 三個回文子串: "a", "b", "c".
示例 2:
輸入: "aaa"
輸出: 6
說明: 6個回文子串: "a", "a", "a", "aa", "aa", "aaa".
注意:
輸入的字符串長度不會超過1000。
解答:
這一題可以用窮舉法,檢查s[i...j]是否為回文字串但是應(yīng)該會超時。
不過我們可以這么想,如果現(xiàn)在知道了s[i...j]是回文字串,那么如果
s[i-1] == s[j+1],那么s[i-1...j+1]也一定是回文字串。這樣就聯(lián)想到了
動態(tài)規(guī)劃。
設(shè)置dp[i] [j]表示s[i...j]是否是回文字串,若是為true,否則為false。
那么對任意的dp[i] [j] = dp[i+1] [j-1]&&s[i]==s[j]。一旦為true就把
結(jié)果+1。
不過需要注意的是要使用上述的遞推公式,需要先求出所有長度為1和為2的回文字串,這個比較
簡單,就不贅述了。
java ac代碼:
class Solution { public int countSubstrings(String s) { //dp[i][j]表示s[i...j]是否為回文字串。 boolean[][] dp = new boolean[s.length()][s.length()]; int ans = 0; for(int i = 0;i < dp.length;i++) { dp[i][i] = true; ans++; } for(int i = 1;i < dp.length;i++) if(s.charAt(i-1) == s.charAt(i)) { dp[i-1][i] = true; ans++; } for(int k = 2;k < s.length();k++) for(int i = k;i < s.length();i++) if(s.charAt(i-k) == s.charAt(i)&&dp[i-k+1][i-1]) { dp[i-k][i] = true; ans++; } return ans; } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/77458.html
Problem Given a string, your task is to count how many palindromic substrings in this string. The substrings with different start indexes or end indexes are counted as different substrings even they c...
摘要:圖因此可以成為樹,在所有可能的樹中,具有最小高度的樹被稱為最小高度樹。給出這樣的一個圖,寫出一個函數(shù)找到所有的最小高度樹并返回他們的根節(jié)點(diǎn)。因此使用一個數(shù)組代表每個節(jié)點(diǎn)的入度,若入度為就是葉子節(jié)點(diǎn)。 題目地址:https://leetcode-cn.com/probl...題目描述: 對于一個具有樹特征的無向圖,我們可選擇任何一個節(jié)點(diǎn)作為根。圖因此可以成為樹,在所有可能的樹中,具有最小...
摘要:關(guān)于遞歸這里提一兩點(diǎn)遞歸基本有這幾步遞歸的模板,終止條件,遞歸調(diào)用,邏輯處理。 ?作者簡介:大家好,我是車神哥,府學(xué)路18號的車神? ?個人主頁:應(yīng)無所住而生...
摘要:對于每個氣球,提供的輸入是水平方向上,氣球直徑的開始和結(jié)束坐標(biāo)??梢陨涑龅墓臄?shù)量沒有限制。弓箭一旦被射出之后,可以無限地前進(jìn)。我們想找到使得所有氣球全部被引爆,所需的弓箭的最小數(shù)量。解答這是一道區(qū)間覆蓋問題,不太好說清楚,利用模板即可。 題目地址:https://leetcode-cn.com/probl...題目描述:在二維空間中有許多球形的氣球。對于每個氣球,提供的輸入是水平方...
閱讀 2324·2021-11-22 12:01
閱讀 2000·2021-11-12 10:34
閱讀 4526·2021-09-22 15:47
閱讀 2837·2019-08-30 15:56
閱讀 2870·2019-08-30 15:53
閱讀 2411·2019-08-30 13:53
閱讀 3387·2019-08-29 15:35
閱讀 3131·2019-08-29 12:27