计算一个字符串的最长不重复字符串长度

例如abcdcfdgq

截取的是cfdgq 长度为5

 1     public int lengthOfLongestSubstring(String s) {
 2         if(s == null || s.length() == 0){
 3             return 0;
 4         }
 5         int max = 0;
 6         //j是左边界,i是右边界
 7         int j = 0;
 8         Map<Character,Integer> map = new HashMap<Character,Integer>();
 9         for(int i = 0;i < s.length(); i++){
10             if(map.get(s.charAt(i)) != null){
11                 //如果有重复字符,移动j的位置
12                 j = Math.max(j,map.get(s.charAt(i))+1);
13             }
14             //更新map表
15             map.put(s.charAt(i),i);
16             //更新max值
17             max = Math.max(max,i-j+1);
18         }
19         return max;
20     }

 

posted on 2016-01-29 17:55  酒仙桥吴彦祖  阅读(184)  评论(0)    收藏  举报