import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param s string字符串
     * @return int整型
     */
    public int lengthOfLongestContinuousTasks (String s) {
        // write code here
        if(s.length()==0){
            return 0;
        }
        Map<Character,Integer> map = new HashMap<>();
        int left = 0;
        int len = 0;
        for(int i=0;i<s.length();i++){
            if(map.containsKey(s.charAt(i))){
                len = Math.max(len,i-left);
                left = Math.max(map.get(s.charAt(i))+1,left);
            }
            map.put(s.charAt(i),i);
        }
        len = Math.max(len,s.length()-left);
        return len;
    }
}

本题考察的知识点其实无重复字符最长连续子串,所用编程语言是java.

初始化左指针left=0,遍历s中的每个字符,如果哈希表中不存在该字符,则将字符和所在下标位置存储在哈希表中。如果哈希表中存在该字符,计算此时无重复字符最长连续子串长度并更新左指针位置。最后计算s.length-left与之前得到的无重复字符最长连续子串长度进行比较,得到结果