LeetCode题解:Longest Substring Without Repeating Characters

来源:互联网 发布:原始股 知乎 编辑:程序博客网 时间:2024/06/16 05:32

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;    }}
0 0
原创粉丝点击