最长无重复字符的子串
题目
给定一个字符串,请找出其中无重复字符的最长子字符串。
样例
例如,在”abcabcbb”中,其无重复字符的最长子字符串是”abc”,其长度为 3。
对于,”bbbbb”,其无重复字符的最长子字符串为”b”,长度为1。挑战
O(n) 时间
题解
用哈希表辅助解题。
public class Solution {
/**
* @param s: a string
* @return: an integer
*/
public int lengthOfLongestSubstring(String s) {
HashMap<Character,Integer> hash = new HashMap<>();
int len = 0;
int cur = 0;
for (int i=0;i<s.length();i++)
{
Character c = new Character(s.charAt(i));
if (hash.containsKey(c))
{
i = hash.get(new Character(c)).intValue();
hash.clear();
cur = 0;
}
else
{
cur++;
len = cur>len?cur:len;
hash.put(new Character(s.charAt(i)),i);
}
}
return len;
}
}
Last Update 2016.11.13