原题网址:https://leetcode.com/problems/longest-substring-without-repeating-characters/
Given a string, find the length of the longest substring without repeating characters.
Examples:
Given "abcabcbb"
, the answer is "abc"
, which the length is 3.
Given "bbbbb"
, the answer is "b"
, with the length of 1.
Given "pwwkew"
, 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 class Solution {
public int lengthOfLongestSubstring(String s) {
if (s == null) return 0;
boolean[] has = new boolean[256];
int max = 0;
int from = 0;
char[] sa = s.toCharArray();
for(int i=0; i<sa.length; i++) {
while (has[sa[i]]) has[sa[from++]] = false;
has[sa[i]] = true;
max = Math.max(max, i-from+1);
}
return max;
}
}