美文网首页数据结构和算法分析动态规划
最长无重复字符子串练习题

最长无重复字符子串练习题

作者: IT_Matters | 来源:发表于2016-06-29 11:44 被阅读1154次

题目

对于一个字符串,请设计一个高效算法,找到字符串的最长无重复字符的子串长度。
给定一个字符串A及它的长度n,请返回它的最长无重复字符子串长度。保证A中字符全部为小写英文字符,且长度小于等于500。

测试样例:"aabcb",5
返回:3

思路

设字符串为s,当前位置i, dp[i-1]表示以i-1位置为结尾的最长无重复子串子串(以下简称为子串)的开始位置。并设置一个map,记录字符s[i]上一次出现的位置lastOcc。
PS:dp[i-1]在图片中表示为pre,此处使用dp[i-1]只是为了方便理解动态规划的思想,优化之后可以省去。

如果lastOcc<dp[i-1], dp[i]=dp[i-1];

来自牛客网,有删改

如果lastOcc>=dp[i-1],dp[i]=lastOcc+1;

Paste_Image.png

综上 :dp[i]=Math.max(dp[i-1],lastOcc+1);

所以我们可以得出以每一个位置为终点的子串的起始位置,即可以得出以每个位置为终点的每个子串的长度,从中取最大值即可。

程序代码

用pre代替了dp[],如果还有错误或者不明白的地方请给我留言,谢谢。

import java.util.*;

public class DistinctSubstring {
    public int longestSubstring(String A, int n) {
        if(n<=1) return n;
        int maxLen=0;
        Map<Character,Integer>map=new HashMap<>();
        char[] arr=A.toCharArray();
        map.put(arr[0],0);

        int pre=0;
        Integer lastOcr=null;
        for(int i=1;i<n;i++){
            lastOcr=map.get(arr[i]); 
            if(lastOcr==null) lastOcr=-1;
            pre=Math.max(lastOcr+1,pre);
            maxLen=Math.max(i-pre+1,maxLen);
            map.put(arr[i],i);
        }
        return maxLen;
    }
}

相关文章

  • 2021-03-15 美团优选面试总结

    牛客网答题 练习题:力扣网 1.找到字符串的最长无重复字符子串 翻转单向链表,并输出新的Head ThreadLo...

  • iOS面试题汇总---算法类

    字符串 【3】最长回文子串 【3】最长无重复子串 【1*】字符串转数字 【4】KMP 算法 【2】字符串全排列 【...

  • 2019-07-03

    删除链表倒数第N个节点 最长回文子串 无重复字符的最长子串

  • 最长无重复字符子串练习题

    题目 对于一个字符串,请设计一个高效算法,找到字符串的最长无重复字符的子串长度。 给定一个字符串A及它的长度n,请...

  • 最长无重复字符子串练习题

    题目 对于一个字符串,请设计一个高效算法,找到字符串的最长无重复字符的子串长度。给定一个字符串A及它的长度n,请返...

  • 面试常见算法

    最长不含重复字符的子字符串: 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 示例...

  • leetCode3最大无重复字符的子串

    最长无重复字符的子串 给定一个字符串,找出不含有重复字符的最长子串的长度。 示例: 实现思路 初始化hashSet...

  • 算法1-无重复字符的最长子串

    无重复字符的最长子串 首先分析一下题目,求给定字符串的最长不重复子串,思路应该是分治不断降规模,把长度为n的字符串...

  • 字符串

    1 最长无重复字符子串 2 最长上升子序列(动态规划) 3 最长公共子序列的长度(动态规划) 4 对于一个字符串,...

  • 文章收藏

    iOS面试题系列之常见算法 排序算法整理 字符串【3】最长回文子串【3】最长无重复子串【1*】字符串转数字【4】K...

网友评论

    本文标题:最长无重复字符子串练习题

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