jsp判断字符串相等_最长回文字符串三种解法
生活随笔
收集整理的這篇文章主要介紹了
jsp判断字符串相等_最长回文字符串三种解法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
先解釋一下什么是回文字符串,比如說字符串“aba”,無論是從先往后讀取還是從后往前讀取,結果都是一樣的。當給定很長的字符串時,如何快速獲取到最長的回文字符串,這也是大廠比較常見的算法面試題,那么這里給出三種解法。
- 1.暴力窮舉法思路:即遍歷每種子字符串,然后判斷該子字符串是否為回文(即前半部分是否等于后半部分),時間復雜度為O(n*n*n)
暴力窮舉
- 2.中間擴散法
從每一個位置出發,向兩邊擴散即可。遇到不是回文的時候結束。
1.首先往左尋找與當期位置相同的字符,直到遇到不相等為止。
2.然后往右尋找與當前位置相同的字符,直到遇到不相等為止。
3.最后左右雙向擴散,直到左和右不相等。如下圖所示:
中間擴散法
3.動態規劃法
一開始我剛聽到動態規劃這個詞的時候感覺很高大上,后來經過查找資料發現其實很簡單,只不是從下向上的計算,說白了就是空間換時間,把中間的計算結果暫存起來,避免重復計算;
思路:
1.我們用一個 boolean dp[i][j]表示字符串從 i 到 j 這段是否為回文。
2.試想如果dp[i][j]=true,我們要判斷 dp[i-1][j+1]是否為回文。
只需要判斷字符串在(l-1)和(r+1)兩個位置是否為相同的字符,是不是減少了很多重復計算。動態規劃關鍵是找到初始狀態和狀態轉移方程。
初始狀態,l=r 時,此時 dp[l][r]=true。
狀態轉移方程,dp[l][r]=true 并且(l-1)和(r+1)兩個位置為相同的字符,此時 dp[l-1][r+1]=true。
動態規劃法
總結
以上是生活随笔為你收集整理的jsp判断字符串相等_最长回文字符串三种解法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 斯宾塞:2022 年 Xbox 游戏阵容
- 下一篇: apk 反编译_APK反编译与回编译修改