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与之前得到的无重复字符最长连续子串长度进行比较,得到结果