Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for “abcabcbb” is “abc”, which the length is 3. For “bbbbb” the longest substring is “b”, with the length of 1.
题意:给定一个字符串,找到没有重复字符的最长子串
解题思路:用Hashmap建立字符串内字符与出现位置的映射,当字符出现两次时,两次位置的差就是无重复字符串的长度
代码:
public class Solution {
public int lengthOfLongestSubstring(String s) {
if(s == null || s.length() == 0){
return 0;
}
int len = 0;
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
for(int head = 0, end = 0; end < s.length(); ++end){
if(map.containsKey(s.charAt(end))){
head = Math.max(head, map.get(s.charAt(end)) + 1);
}
map.put(s.charAt(end), end);
len = Math.max(len, end - head + 1);
}
return len;
}
}

本文介绍了一种求解字符串中最长无重复字符子串长度的高效算法,并提供了详细的Java实现代码。通过使用HashMap记录字符及其最新出现的位置,能够在遍历过程中动态更新最长子串的长度。
161

被折叠的 条评论
为什么被折叠?



