【算法】字符串和數(shù)組操作01

1昆著、無重復(fù)字符的最長子串

給定一個字符串省容,請你找出其中不含有重復(fù)字符的 **最長子串 **的長度。

示例:

輸入: s = "abcabcbb"
輸出: 3 
解釋: 因為無重復(fù)字符的最長子串是 "abc"匀油,所以其長度為 3缘缚。
/**
 * @param {string} s
 * @return {number}
 */
var lengthOfLongestSubstring = function(s) {
    let arr = [], max = 0;
    for( let i = 0; i < s.length; i++ ) {
        let index = arr.indexOf(s[i]);
        if( index !== -1 ) {
            arr.splice( 0, index+1 );
        }
        arr.push( s.charAt(i) );
        max = Math.max(arr.length, max);
    }

    return max;
};

2、最長回文子串

給你一個字符串 s敌蚜,找到 s 中最長的回文子串忙灼。

思路:對于一個回文子串,例如cbabc钝侠,去掉首尾的c,它依舊是一個回文子串酸舍。因此我們可以通過P(i,j)表示從下標i到j(luò)是否是回文字符串帅韧,狀態(tài)轉(zhuǎn)移方程:P(i,j) = P(i+1,j-1)^(s[i]===s[j])。

示例:

輸入:s = "babad"
輸出:"bab"
解釋:"aba" 同樣是符合題意的答案啃勉。
/**
 * @param {string} s
 * @return {string}
 */
var longestPalindrome = function(s) {
    let n = s.length;
    let res = '';
    let dp = Array.from( new Array(n),() => new Array(n).fill(0) );
    for( let i = n-1; i >= 0; i-- ) {
        for( let j = i; j < n; j++ ) {
            dp[i][j] = s[i] == s[j] && (j - i < 2 || dp[i+1][j-1]);
            if(dp[i][j] && j - i +1 > res.length){
                res = s.substring(i, j+1);
            }
        }
    }
    return res;
};

3忽舟、兩數(shù)之和

給定一個整數(shù)數(shù)組 nums 和一個整數(shù)目標值 target,請你在該數(shù)組中找出 和為目標值 的那 兩個 整數(shù)淮阐,并返回它們的數(shù)組下標叮阅。

思路:通過哈希表,將出現(xiàn)的元素以(key:數(shù)組泣特,value:下標)浩姥,當(dāng)我們遍歷每一個元素時,只需要判斷target - nums[i]是否在哈希表存在值就可以状您。

示例:

輸入:nums = [2,7,11,15], target = 9
輸出:[0,1]
解釋:因為 nums[0] + nums[1] == 9 勒叠,返回 [0, 1] 兜挨。
/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
    var map = new Map();
    for(var i=0;i<nums.length;i++) {
        // 判斷哈希表中是否存在相應(yīng)target - nums[i]值。
        if(map.has(target - nums[i]) && map.get(target - nums[i]) !== i) {
            return [map.get(target - nums[i]), i];
        }
        map.set(nums[i], i);
    }
    return []
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末眯分,一起剝皮案震驚了整個濱河市拌汇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌弊决,老刑警劉巖噪舀,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異飘诗,居然都是意外死亡与倡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門疚察,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蒸走,“玉大人,你說我怎么就攤上這事貌嫡”茸ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵岛抄,是天一觀的道長别惦。 經(jīng)常有香客問我,道長夫椭,這世上最難降的妖魔是什么掸掸? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮蹭秋,結(jié)果婚禮上扰付,老公的妹妹穿的比我還像新娘。我一直安慰自己仁讨,他們只是感情好羽莺,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著洞豁,像睡著了一般盐固。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上丈挟,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天刁卜,我揣著相機與錄音,去河邊找鬼曙咽。 笑死蛔趴,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的例朱。 我是一名探鬼主播夺脾,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼之拨,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了咧叭?” 一聲冷哼從身側(cè)響起蚀乔,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎菲茬,沒想到半個月后吉挣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡婉弹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年睬魂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片镀赌。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡氯哮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出商佛,到底是詐尸還是另有隱情喉钢,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布良姆,位于F島的核電站肠虽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏玛追。R本人自食惡果不足惜税课,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望痊剖。 院中可真熱鬧韩玩,春花似錦、人聲如沸陆馁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽氮惯。三九已至,卻和暖如春想暗,著一層夾襖步出監(jiān)牢的瞬間妇汗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工说莫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留杨箭,地道東北人。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓储狭,卻偏偏與公主長得像互婿,于是被迫代替她去往敵國和親捣郊。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容