[LeetCode]3. 无重复字符的最长子串(滑动窗口,剑指Offer)
题意
如题。例:"arabcacfr",输出4。
解题思路
- 维护滑动窗口、维护map(map中放该元素目前出现过的最右索引);
- 每次更新左边界,更新当前元素在map中的值,更新maxLen,更新右边界。
class Solution {
public int lengthOfLongestSubstring(String s) {
if(s==null||s.length()==0){
return 0;
}
int[] map=new int[256];
Arrays.fill(map,-1);
int l=0;
int r=0;
int maxLen=0;
while(r<s.length()){
if(map[s.charAt(r)]>=l){
l=map[s.charAt(r)]+1;
}
map[s.charAt(r)]=r;//
if(r-l+1>maxLen){
maxLen=r-l+1;
}
r++;
}
return maxLen;
}
}
posted on 2019-03-19 09:42 coding_gaga 阅读(302) 评论(0) 编辑 收藏 举报