最長(zhǎng)無重復(fù)字符子串練習(xí)題

題目

對(duì)于一個(gè)字符串,請(qǐng)?jiān)O(shè)計(jì)一個(gè)高效算法,找到字符串的最長(zhǎng)無重復(fù)字符的子串長(zhǎng)度。

給定一個(gè)字符串A及它的長(zhǎng)度n,請(qǐng)返回它的最長(zhǎng)無重復(fù)字符子串長(zhǎng)度。保證A中字符全部為小寫英文字符,且長(zhǎng)度小于等于500。

思路
  • DP思想:最優(yōu)子結(jié)構(gòu)、重復(fù)子問題
  • Hash:存儲(chǔ)上一個(gè)位置,輔助DP進(jìn)行
答案
    int longestSubstring(string A, int n) {
        // 存儲(chǔ)上一個(gè)重復(fù)字符的位置
        int *lastPosition = new int[256];
        for (int i = 0; i < 256; i++) {
            lastPosition[i] = -1;
        }

        // 動(dòng)態(tài)規(guī)劃過程
        int previous = -1;// 前一個(gè)的最長(zhǎng)子串左節(jié)點(diǎn)位置
        int current = 0;
        int maxLength = 0;
        for (int i = 0; i < n; i++) {
            previous = max(previous, lastPosition[A[i]]);
            current = i - previous;
            maxLength = max(current, maxLength);
            lastPosition[A[i]] = i;
        }
        return maxLength;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 題目 對(duì)于一個(gè)字符串,請(qǐng)?jiān)O(shè)計(jì)一個(gè)高效算法,找到字符串的最長(zhǎng)無重復(fù)字符的子串長(zhǎng)度。給定一個(gè)字符串A及它的長(zhǎng)度n,請(qǐng)返...
    IT_Matters閱讀 2,247評(píng)論 0 1
  • 算法字符串系列的第四篇文章,計(jì)算給定字符串的最長(zhǎng)無重復(fù)子串。 這篇文章主要介紹兩種方法,一種是基于hash的思想,...
    zero_sr閱讀 14,489評(píng)論 3 14
  • 第一章 Nginx簡(jiǎn)介 Nginx是什么 沒有聽過Nginx?那么一定聽過它的“同行”Apache吧!Ngi...
    JokerW閱讀 33,023評(píng)論 24 1,002
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,923評(píng)論 0 33
  • 1. 問題定義 最長(zhǎng)不重復(fù)子串:一個(gè)字符串中最長(zhǎng)的沒有重復(fù)字符的子串。舉個(gè)?? : abcabcbb 最長(zhǎng)子串 a...
    林大鵬閱讀 12,144評(píng)論 0 2

友情鏈接更多精彩內(nèi)容