欢迎使用CSDN-markdown编辑器

来源:互联网 发布:sofifa数据库手机版 编辑:程序博客网 时间:2024/06/11 19:39

3.Longest Substring Without Repeating Characters

题意:求最长不重复子串的长度

思想:利用hash存储已遍历字符的最近出现位置,如果大于当前不重复子串的起始位置,表明该字符是重复出现,迭代更新。
算法复杂度:O(n)

具体代码

class Solution {    public int lengthOfLongestSubstring(String s) {        int start = 0, end = 0;        int maxlen = 0;        int currlen = 0;        int hash[] = new int [128];        for(int i=0;i<128;i++) hash[i] = -1;        for(int i=0;i<s.length();i++)        {            if(hash[s.charAt(i)]>=start){                if(maxlen<currlen) maxlen = currlen;                start = hash[s.charAt(i)]+1;                currlen = i-start+1;                hash[s.charAt(i)] = i;            }            else{                hash[s.charAt(i)] = i;                currlen++;            }        }        return (maxlen>currlen)?maxlen:currlen;    }}
原创粉丝点击