Leetcode 3 : Longest Substring Without Repeating Characters

来源:互联网 发布:个人自动发卡平台源码 编辑:程序博客网 时间:2024/05/26 08:42

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.


思路:我们需要解决的是,遇到出现重复的字符,如何处理的问题。这道题由于只有字符,因此用一个256的int数组来模拟哈希表,key存放字符,value存放索引,再用一个pointer记录字符串的起始位置left,当value大于left的key是无效的,代码如下:

    public static int lengthOfLongestSubstring(String s) {        int[] alphabet = new int[256];        int left = 0, maxLen = 0;        for(int i = 0; i < alphabet.length; i++)        alphabet[i] = -1;        for(int i = 0; i < s.length(); i++){        System.out.println(s.charAt(i) + " " + alphabet[s.charAt(i)]);            if(alphabet[s.charAt(i)] != -1 && alphabet[s.charAt(i)] >= left){                maxLen = (i - left) > maxLen ? (i - left) : maxLen;                left = alphabet[s.charAt(i)] + 1;            }            alphabet[s.charAt(i)] = i;                      }        return (s.length() - left) > maxLen ? (s.length() - left) : maxLen;    }

0 0
原创粉丝点击