leetcode 3 无重复字符的最长子串

简介: leetcode 3 无重复字符的最长子串

无重复字符的最长子串


2f73245a272e4a9cbb4e2db6d131c023.png

动态规划

  • dp数组的含义
    i之前无重复的最长子串
  • dp的公式
  • dp[i] = max( dp[i-1] , (int)tmp.size() );
    当前i到叙的最长不重复子串,和dp[i-1]中最大的
  • dp初始化
    dp[0] = 1
    一个元素自己是一个字串
class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        if(s.size()==0) return 0;
        if(s.size()==1) return 1;
        vector<int> dp(s.size() ,0);
        dp[0] =1;
        for(int i=1 ; i<s.size() ;i++)
        {
            string tmp;
            tmp += s[i];
            for(int j=i-1 ; j>=0 ;j--)
            {
                if(tmp.find(s[j])==-1)//为不重复的点,加入子串
                {
                    tmp += s[j];
                    if(j==0)//找到最头处,记录dp
                    {
                        dp[i] = max( dp[i-1] , (int)tmp.size() );
                        tmp.clear();
                    }
                } 
                else //找到重复的点,记录dp跳出循环
                {
                    dp[i] = max( dp[i-1] , (int)tmp.size() );
                    tmp.clear();
                    break;
                }
            }
        }
        // for(int it:dp) cout<<it<<' ';
        return dp[s.size()-1];
    }
};
相关文章
|
1月前
|
存储 算法
Leetcode第三题(无重复字符的最长子串)
这篇文章介绍了解决LeetCode第三题“无重复字符的最长子串”的算法,使用滑动窗口技术来找出给定字符串中最长的不含重复字符的子串,并提供了详细的代码实现和解释。
69 0
Leetcode第三题(无重复字符的最长子串)
|
3月前
|
算法
LeetCode第3题无重复字符的最长子串
该文章介绍了 LeetCode 第 3 题无重复字符的最长子串的解法,通过使用 HashSet 记录不重复的子元素,以每个字符开头遍历字符串,遇到重复字符则重新计算,最终找到最长子串,同时提到可以考虑使用 HashMap 降低复杂度。
LeetCode第3题无重复字符的最长子串
|
5月前
|
存储 算法 数据可视化
深入解析力扣161题:相隔为 1 的编辑距离(逐字符比较与动态规划详解)
深入解析力扣161题:相隔为 1 的编辑距离(逐字符比较与动态规划详解)
|
5月前
|
存储 算法 数据可视化
深入解析力扣157题:用Read4高效读取N个字符(多种解法与详细图解)
深入解析力扣157题:用Read4高效读取N个字符(多种解法与详细图解)
|
4月前
|
索引
821.字符的最短距离-力扣(LeetCode)
821.字符的最短距离-力扣(LeetCode)
35 0
|
5月前
|
存储 算法 程序员
力扣经典150题第三十一题:无重复字符的最长子串
力扣经典150题第三十一题:无重复字符的最长子串
32 0
|
5月前
【LeetCode刷题】滑动窗口思想解决问题:长度最小的子数组、无重复字符的最长子串
【LeetCode刷题】滑动窗口思想解决问题:长度最小的子数组、无重复字符的最长子串
|
5月前
|
存储 算法 数据可视化
深入解析力扣159题:至多包含两个不同字符的最长子串(滑动窗口法详细图解)
深入解析力扣159题:至多包含两个不同字符的最长子串(滑动窗口法详细图解)
|
5月前
|
存储 算法 数据挖掘
LeetCode 第三题:无重复字符的最长子串 详解 【3/1000】
LeetCode 第三题:无重复字符的最长子串 详解 【3/1000】
|
2月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行