LeetCode04 求字符串最长长度

给定一个字符串,找到没有重复字符的最长子串,返回它的长度。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| class Solution{ public int lengthOfLongestSubstring(String s) { int len = s.length(); int ans = 0; for(int i=0;i<len;i++){ for(int j=1;j<=len;j++){ if(allUnique(s,i,j)){ ans = Math.max(ans,j-i); } } } return ans; } public boolean allUnique(String str,int i,int j){ Set<Character> set=new HashSet<>(); for(int start=i;start<j;start++){ if(set.contains(str.charAt(start))){ return false; }else{ set.add(str.charAt(start)); } } return true; } public int lengthOfLongestSubstring2(String s) { int len =s.length(); int max=0; int left=0; HashMap<Character,Integer> map = new HashMap<>(); for(int i=0;i<len;i++){ if(map.containsKey(s.charAt(i))){ left = Math.max(left,map.get(s.charAt(i))+1); } map.put(s.charAt(i),i); max = Math.max(max,i-left+1); } return max; } }
|
__END__