最長回文子串解法

2022-08-23 06:33:11 字數 1066 閱讀 7093

沒咋麼過腦子,瞬間能想到的思路大概為:

"abcabcbb"

比如這個字串

首先 宣告乙個陣列  裡面存放各種開分來的字串; 切分條件是當這次迴圈的值 存在於當前的陣列中

像這樣abc bca cab abc bcb cb

最初的實現**:

var str = "";

//生成一些隨機字元

for(var i =0;i<1000000;i++)

var resulte = ;//

儲存字串結果

var index = 0;//

索引while

(str.length)

else

}

str = str.slice(1);

index++;

}console.log(resulte)

第二日優化**:

思路:bcadeaopqrxyz

當上面的2個a 相遇的時候

第乙個陣列中應該存放的值為: bcade

首先能確定的是 bcade 肯定是正確的格式(無重複的字串)

其次能確定的是  bcadea 絕對大過於 cade ade de 

也就是說 第乙個a之前的值不用再迴圈了,迴圈直接從第乙個a後面的值開始即可;

var str = "";

//生成一些隨機字元

for(var i =0;i<1000000;i++)

var resulte = ;//

儲存字串結果

var index = 0;//

索引var maxstr = "";

while

(str.length)

var _pos =resulte[index].indexof(str[i]);

var _step = 0;

if(_pos === -1)

else

}

str = str.slice(_step+1);

index++;

}console.log(maxstr)

最長回文子串 解法一

其實最最簡單的演算法,也是效率最低的應該就是列舉子串,不過在這裡沒有必要拿來寫 解法一是在列舉子串上優化的 我們用 a,b 來表示子串,即從位置a到位置b的子串 假設現在我們已經知道了子串 x,y 不是回文串,那麼 x 1,y 1 x 2,y 2 x n,y n 還有可能是回文串嗎?當然不可能!所以...

最長回文子串的解法

1 暴力法 最容易想到的就是暴力破解,求出每乙個子串,之後判斷是不是回文,找到最長的那個。求每乙個子串時間複雜度o n 2 判斷子串是不是回文o n 兩者是相乘關係,所以時間複雜度為o n 3 string findlongestpalindrome string s if tmp1 tmp2 j ...

最長回文子串兩種解法

刷leetcode.給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 思路 遍歷每乙個字元,以字元為中心,將字串對折,如果對應的字元相等,則可以確認該字串為回文串...