题目描述
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例
输入: "abcabcbb"
输出:3
解释: 因为无重复字符的最长子串是"abc",所以其长度为 3。
代码
class Solution {
public int lengthOfLongestSubstring(String s) {
HashMap<Character, Integer> map = new HashMap();
int res = 0;
int temp = 0;
int begin = 0;
int i = 0;
for(;i < s.length(); ) {
if(!map.containsKey(s.charAt(i))) {
map.put(s.charAt(i), i);
temp = map.size();
if(temp > res) {
res = temp;
}
}
else{
map.remove(s.charAt(begin));
begin++;
continue;
}
i++;
}
return res;
}
}
解题要点
1、注意hashmap所有自带操作基本都是针对key来操作。
2、附hashmap常用方法:
map.isEmpty() | 判断是否为空 |
map.containsKey() | 判断是否含有key |
map.containsValue() | 判断是否含有value |
map.size() | Hashmap的元素个数 |
map.clear() | 清空hashmap |
Object clone = map.clone; | Hashmap的克隆 |
遍历:
for(String key : map.keySet()){
System.out.println("Key: "+key+" Value: "+map.get(key));
}