leetCode 字串相關問題

2022-03-30 17:12:01 字數 1147 閱讀 8479

125. 驗證回文串

/** 給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。

* 輸入: "a man, a plan, a canal: panama"

輸出: true

回文串:正讀和反讀都是一樣的字串。

* */

public boolean ispalindrome2(string s)

return result.tostring();

}

5. 最長回文子串

給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為 1000。

策略:a:暴力求解:時間複雜度是o(n*2)

b:記憶化搜尋:複雜度 o(n^2) 。設 f[i][j] 表示[i,j]之間的最長回文子串,遞推方程如下:

f[i][j] = if (i == j) s[i]

if (s[i] == s[j] && f[i+1][j-1] == s[i+1][j-1]) s[i][j]

else max(f[i+1][j-1], f[i][j-1], f[i+1][j])

c:動態規劃演算法:

設狀態為 f(i,j) ,表示區間[i,j]是否為回文串,則狀態轉移方程為

* 動態規劃問題經常用於求解最優子結構以及重疊子問題,以前我們經常將重疊子問題

* 使用遞迴進行實現,但是有問題的是,會進行大量重複的計算,而動態規劃就是將之前的結果儲存下來,避免了不必要的

* 重複操作,提公升了效率。

* * 實現原理:

* 借助乙個二維布林陣列

* 每個dp[i][j]表示乙個方格,每個方格中的t與f分別表示當前子串是否是

* 回文字串。

* 再進行轉換的時候,表示式即是str[i]==str[j] && dp[i+1][j-1]

* */

public string longestpalindrome3(string s)

}}

return res;

}

字串相關問題

動態規劃解法 dp i j dp i j dp i j 表示字串 s ss 的前 i ii 個字元中是否包含字串 t tt 的前 j jj 個字元。狀態轉移方程 if s i s j dp i j dp i 1 j 1 else dp i j dp i j 1 逐個查詢法 可以依賴於 str in ...

字串相關問題

string s1 abc string s2 new string efg 首先,要對jvm執行時資料區有所了解,主要包括棧 堆 方法區,這裡主要涉及到了方法區,方法區主要儲存class檔案對應的資料,class常量池的資料 字面量和符號引用 會在載入階段被載入到執行時常量池中,在解析階段,會在堆...

刷題(leetcode字串相關)

125.驗證回文字串 給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。思路 將字串中的大寫字母轉成小寫,只保留字母和數字,然後將字串與這個字串的反轉作比較 var ispalindrome function s 對比字串和字...