LeetCode题解-3-Longest Substring Without Repeating Characters
生活随笔
收集整理的這篇文章主要介紹了
LeetCode题解-3-Longest Substring Without Repeating Characters
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
2019獨角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
解題思路
首先要讀懂題目,它要求的是找到最長的子串,并且子串中沒有出現(xiàn)重復(fù)的字符。
我的想法,是用一個map存儲每個字符最后出現(xiàn)的位置,還要有個變量start,它用來記錄上一次出現(xiàn)重復(fù)的位置,如果當(dāng)前字符上一次出現(xiàn)的位置比start小,那么說明中間出現(xiàn)了重復(fù),不能當(dāng)成有效的子串。記得就是在掃描結(jié)束后,再判斷一下最后一段子串。
給個圖簡單說明一下。
參考源碼
public class Solution {public int lengthOfLongestSubstring(String s) {if (s == null || s.isEmpty()) {return 0;}int max = 0;Map<Character, Integer> lastPos = new HashMap<Character, Integer>();int start = 0;lastPos.put(s.charAt(0), start);for (int i = 1; i < s.length(); i++) {char c = s.charAt(i);if (lastPos.containsKey(c) && lastPos.get(c) >= start) {if (i - start > max) {max = i - start;}start = lastPos.get(c) + 1;}lastPos.put(c, i);}if (s.length() - start > max) {max = s.length() - start;}return max;} }轉(zhuǎn)載于:https://my.oschina.net/bonyfish/blog/841385
總結(jié)
以上是生活随笔為你收集整理的LeetCode题解-3-Longest Substring Without Repeating Characters的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: _Linux软件安装
- 下一篇: 学习记录4