Longest Substring Without Repeating Characters

经典问题,可以把周边都做了,详见ref  http://blog.csdn.net/linhuanmars/article/details/19949159

public class Solution {
    public int lengthOfLongestSubstring(String s) {
        if(s==null||s.length()<1) return 0;
        int w =0, r = 0, len = 1;
        HashSet<Character> hs = new HashSet<Character>();
        while(r<s.length()){
            if(hs.contains(s.charAt(r))){
                len = Math.max(len, r-w);
                while(s.charAt(w)!=s.charAt(r)){
                    hs.remove(s.charAt(w)); // !!!!
                    w++;
                }
                w++; ///!!!
            }else{
                hs.add(s.charAt(r));
            }  
            r++;
        }
        return Math.max(len,r-w);
    }
}

 

posted @ 2015-04-20 12:21  世界到处都是小星星  阅读(98)  评论(0编辑  收藏  举报