LeetCode - 3. Longest Substring Without Repeating Characters
Given a string, find the length of the longest substring without repeating characters.
Example 1:
Input: "abcabcbb"
Output: 3
Explanation: The answer is "abc"
, with the length of 3.
Example 2:
Input: "bbbbb"
Output: 1
Explanation: The answer is "b"
, with the length of 1.
Example 3:
Input: "pwwkew"
Output: 3
Explanation: The answer is "wke"
, with the length of 3.
Note that the answer must be a substring, "pwke"
is a subsequence and not a substring.
求最长不含重复字符字串,双指针,求最大两相同字符的距离即可。时间复杂度O(n),空间复杂度O(n)。题目没说一定全是字母所以不能使用256长度数组替代map,如果可以时间复杂度是O(1)。
class Solution { public int lengthOfLongestSubstring(String s) { if (s == null || s.length() <= 0) return 0; Map<Character, Integer> map = new HashMap<>(); int ret = 0; for (int i=0,j=0; i<s.length(); i++) { char ch = s.charAt(i); if (map.containsKey(ch)) { j = Math.max(j, map.get(ch) + 1); } ret = Math.max(ret, i-j+1); map.put(ch, i); } return ret; } }
作者:Pickle
声明:对于转载分享我是没有意见的,出于对博客园社区和作者的尊重一定要保留原文地址哈。
致读者:坚持写博客不容易,写高质量博客更难,我也在不断的学习和进步,希望和所有同路人一道用技术来改变生活。觉得有点用就点个赞哈。