1. 程式人生 > >leetcode-java-3. Longest Substring Without Repeating Characters

leetcode-java-3. Longest Substring Without Repeating Characters

思路:
用HashMap動態儲存字串的每個不重複的子字串;
當有重複字元出現時,動態更新子字串的最大值和更新HashMap

public class Solution {
    public int lengthOfLongestSubstring(String s) {

        HashMap<Character,Integer> map = new HashMap<Character,Integer>();
        int removeStart = 0,
            max = 0,
            i = 0;

        for(;i <
s.length();i++) { char ch = s.charAt(i); if(!map.containsKey(ch)) { map.put(ch,i); } else{ max = Math.max(max,map.size()); while(map.containsKey(ch)) { map.remove(s.charAt(removeStart)); removeStart++
; } map.put(ch,i); } } // 當字串無重複時,max還是0,則需要更新 max = Math.max(max, map.size()); return max; } }