Leetcode 刷题心得 无重复字符的最长子串
class Solution {
public int lengthOfLongestSubstring(String s) {
Set<Character> occ = new HashSet<Character>();
int n = s.length();
int rk = -1;//数组的右标点
int con = 0;//最长字符串的统计数
for(int i =0;i<n;i++){
if(i != 0){
occ.remove(s.charAt(i-1));//删除前一个字符,避免干扰后面的统计
}
//运用HashSet的contains()方法看HashSet里是否有这个数据
while(rk+1<n&& !occ.contains(s.charAt(rk+1))){
occ.add(s.charAt(rk+1));
rk++;
}
//统计从i到rk之间的最大值
con=Math.max(con,rk-i+1);
}
return con;
}
}
这题由于我刚开始刷题,就按照官方的方法进行刷题(这也是一位的小白的无奈),对于这道题我有下面的想法:
1.我用的这个方法主要用HashSet和charAt的相关只是进行解答,以及Math类的一些方法的应用等
2.