剑指 Offer 48. 最长不含重复字符的子字符串
charAt返回指定索引处的字符。
转为字符数组toCharArray()
剑指 Offer 48. 最长不含重复字符的子字符串
class Solution { public int lengthOfLongestSubstring(String s) { HashMap<Character, Integer> map = new HashMap<>(); int tmp = 0, res = 0; for(int j = 0; j < s.length(); j++){ int i = map.getOrDefault(s.charAt(j), -1); map.put(s.charAt(j), j); //tmp用来存放以字符s[j]为结尾的 “最长不重复子字符串” 的长度 //哈希表中没有重复的情况下,j++,而i始终为-1 //则问号前的式子永远为真,j往后移,最长不重复字串长度也+1 //哈希表中有重复的情况下,更新为j-i,i是哈希表中找到的重复元素的下标 tmp = tmp < j - i ? tmp + 1 : j - i; res = Math.max(tmp, res); } return res; } }