- 「每日一道算法题」Longest Substring Witho
- leetcode第3题 最长无重复子字符串
- 3、Longest Substring Without Repe
- 3、Longest SubString Without Repe
- 3 longest substring without repe
- 3、Longest Substring Without Repe
- 3 longest substring without repe
- 3 Longest Substring Without Repe
- 3.Longest Substring Without Repe
- 3.Longest Substring Without Repe
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.
思路
从左往右扫描字符串,记录当前重复字串的起始位置为start,当遇到重复字符时,将start更新为重复字符的index+1,比较当前不重复字符串长度与max值,更新max值。
寻找重复字符的方式:用一个map记录每个字符上次出现的位置(可用hashmap或int[256])。
解法
public class Solution {
public int lengthOfLongestSubstring(String s) {
HashMap<Character, Integer> map = new HashMap<Character,Integer>();
int maxLen = 0;
int start = 0;
for (int i = 0; i< s.length(); i++) {
if (!map.containsKey(s.charAt(i)) || map.get(s.charAt(i)) < start) {
map.put(s.charAt(i),i);
}
else {
maxLen = Math.max(maxLen,i - start);
start = map.get(s.charAt(i)) + 1;
map.put(s.charAt(i),i);
}
}
maxLen = Math.max(maxLen, s.length() - start);
return maxLen;
}
}
网友评论