力扣热题100道之3无重复字符的最长字串
解法
这道题用到了滑动窗口的方法,我的代码和官方给的稍有不同,思想是一样的
class Solution {public int lengthOfLongestSubstring(String s) {int n=s.length();int sum=0;int j=0;Set<Character>all=new HashSet<>();for (int i = 0; i < n; i++) {if(i!=0){all.remove(s.charAt(i-1));}int tsum=all.size();while(j<n&&!all.contains(s.charAt(j))){all.add(s.charAt(j));j++;tsum++;}sum=Math.max(tsum,sum);}return sum;}}
历史解法
没写出来的一个解法
这道题我真的没有思路,浑浑噩噩地写了两个小时还是没有任何的头绪。
class Solution {public int lengthOfLongestSubstring(String s) {int numMax=0;int n=s.length();char []all=s.toCharArray();for(int i=0;i<n;i++){boolean flag=true;int j=i+1;int num=1;List<Character>check=new ArrayList();check.add(all[i]);while(flag){for(int x=0;x<check.size();x++){if(j<n){if(check.get(x)==all[j]){if(numMax<num)numMax=num;num=0;flag=false;break;}check.add(all[j]); num++;} }j++;}if(!flag)continue;}return numMax;}
}