l3无重复字符最长字串

给定一个字符串s,请你找出其中不含有重复字符的 最长子串 的长度.

  1. charAt():charAt方法用于返回指定索引处的字符
class Solution {
    public int lengthOfLongestSubstring(String s) {
		 int n = s.length(),ans = 0;
		 //存储字符串长度,标记最长字符串
		 Map map = new HashMap();
		 //用Map存储key,value
		 for(int start = 0,end = 0;end < n;end++) {
			 char element = s.charAt(end);
			 //返回最后位置元素的值
			 if(map.containsKey(element)) {
				 start = Math.max(map.get(element)+1, start);
                 //从新位置串起下标
                //比较相同位置的值和下标,把比较大的赋给start
             }
			ans = Math.max(ans, end-start+1);
			//比较最长字符串和新串的长度,返回最长
		    map.put(s.charAt(end), end);
		    //将最后的值放回map
		 }
         return ans;
     }    
}

你可能感兴趣的:(leetcode,java)