美文网首页
3. Longest Substring Without Rep

3. Longest Substring Without Rep

作者: namelessEcho | 来源:发表于2017-10-06 15:08 被阅读0次

    这是一道DP题,使用DP[i]来表示以I为结尾的子串的最大长度。转移关系式式
    DP[i+1]=Math.min(DP[i]+1,i-j),j是距离I+1最近的相同结点的位置。由于DP[i+1]只由前一个状态决定,上面的表达式可以写成迭代的形式。

    class Solution {
        public int lengthOfLongestSubstring(String s) {
            HashMap<Character,Integer> map = new HashMap<>();
            if(s==null||s.length()==0) return 0;
            int max = 0;
            int j =0 ;
            for(int i = 0 ;i<s.length();i++)
            {
                char ch = s.charAt(i);
                if(map.containsKey(ch))
                {
                    int start = map.get(ch);
                    j = Math.min(j+1,i-start);
                }
                else
                {
                    
                    j++;
                }
                max=Math.max(j,max);
                map.put(ch,i);
            }
            return max;
        }
    }
    

    相关文章

      网友评论

          本文标题:3. Longest Substring Without Rep

          本文链接:https://www.haomeiwen.com/subject/aaxryxtx.html