这次主要是查缺补漏,题目的主要意思是寻找没有重复字符的最大字符串,我一时也想不出好的方法,所以就按照论坛里面的解答来做题。通过解答我了解了,大致的思路就是用一个哈希表来存放不同字符的最新索引,然后在每一次更新索引的同时更新最大值即可。
具体代码如下:
class Solution {
public int lengthOfLongestSubstring(String s) {
if (s.length() == 0) return 0;
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
int max = 0;
for (int i = 0, j = 0; i < s.length(); i++) {
//int j = i;
if (map.containsKey(s.charAt(i))) {
j = Math.max(j, map.get(s.charAt(i)) + 1);
}
map.put(s.charAt(i), i);
max = max < i - j + 1? i - j + 1:max;
}
return max;
}
}