沒咋麼過腦子,瞬間能想到的思路大概為:
"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 思路 遍歷每乙個字元,以字元為中心,將字串對折,如果對應的字元相等,則可以確認該字串為回文串...