LeetCode-003-無(wú)重復(fù)字符的最長(zhǎng)子串

題目描述:給定一個(gè)字符串,請(qǐng)你找出其中不含有重復(fù)字符的 最長(zhǎng)子串 的長(zhǎng)度。
示例說(shuō)明請(qǐng)見LeetCode官網(wǎng)。
來(lái)源:力扣(LeetCode) ??
鏈接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/ ??
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
解法一:滑動(dòng)窗口法
從第一個(gè)字符開始,有一個(gè)指針p記錄不重復(fù)的第一個(gè)字符,然后依次向后遍歷,把已經(jīng)出現(xiàn)的字符放在List里,先判斷是否出現(xiàn)過(guò),如果出現(xiàn)過(guò),則計(jì)算當(dāng)前位置和p指針的位置之差,即當(dāng)前不重復(fù)的子串的長(zhǎng)度,和最長(zhǎng)的count對(duì)比,如果大于count,則替換之,然后把p指針向右移動(dòng)一位,繼續(xù)向后遍歷,知道最后一個(gè)字符,返回count值即為最長(zhǎng)子串的長(zhǎng)度。
標(biāo)簽: