LeetCode-3.Longest Substring Without Repeating Characters
Given a string, find the length of the longest substring without repeating characters.
Example 1:
Input: "abcabcbb"
Output: 3
Explanation: The answer is "abc"
, with the length of 3.
Example 2:
Input: "bbbbb"
Output: 1
Explanation: The answer is "b"
, with the length of 1.
Example 3:
Input: "pwwkew"
Output: 3
Explanation: The answer is "wke"
, with the length of 3.
Note that the answer must be a substring, "pwke"
is a subsequence and not a substring.
public int lengthOfLongestSubstring(String s) { if(null==s||"".equals(s)){ return 0; } HashMap<Character,Integer> map = new HashMap<>(); int re =0; int cur = 0;//当前子串的开始位置 for(int i=0;i<s.length();i++){ char c = s.charAt(i); if(map.containsKey(c)){ re = (i-cur)>re?(i-cur):re; cur =map.get(c)>=cur?(map.get(c)+1):cur; } map.put(c,i); } return (s.length()-cur)>re?(s.length()-cur):re; }