题解 | #牛牛的协作#
牛牛的协作
https://www.nowcoder.com/practice/ae483ed148b34e14bec1451b3317984d
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与之前得到的无重复字符最长连续子串长度进行比较,得到结果
