Algorithm
-
What 找出字符串中最长不重复字串的长度
-
How 用MAP来装字符和对应的下标,每次判断MAP中是否有当前的字符,没有就加进去,长度加一,有的话就找出重复字符的位置,以重复字符的下一个为起点重新计算,删去重复字符及之前的元素,最后输出最大长度。
-
Key Codes
class Solution {
public int lengthOfLongestSubstring(String s) {
Map<Character,Integer> map = new HashMap<Character,Integer>();
int start=0,len=0,Max=0,index=0,i,j;
for(i=0;i<s.length();i++){
if(!map.containsKey(s.charAt(i))){
len++;
if(len>Max){
Max = len;
}
map.put(s.charAt(i),i);
}else{
index = map.get(s.charAt(i));
for(j=start;j<=index;j++){
map.remove(s.charAt(j));
}
map.put(s.charAt(i),i);
start = index+1;
len = i-index;
}
}
return Max;
}
}
Review
-
What 快速地多次点击
-
How 用户快速、多次点击一个按钮的时候,你的网站/app可能就有问题了,这时候最好要有警报,通知你某个(某些)用户正在绝望地多次点击某个按钮,这样你才能及时得到反馈、及时修复。
Tip
-
What PMD代码走查配置
-
How 下好PMD插件后在Other Settings里配置规则,然后再Key Map里配置快捷键,这样走查是就快捷键回车回车就行了。