No.3《无重复字符的最长子串》;题型:滑动窗口(unordered_set),string

  • 题目
  • 题解思路(动态规划)
  • 题解代码

题目


题解思路(动态规划)

  1. 申请一个unordered_set<char> lookup,作为滑动窗口,用来存放临时子串;
  2. 从第一个字符开始,对题目字符串进行一轮遍历,每轮循环中,依次将一个字符加入窗口并做以下判断::
    (1)若在窗口子串中找到该字符,说明新的窗口子串不符合条件,则将窗口最左端元素移出,将新字符加入窗口中后,继续向下遍历;
    (2)若窗口子串中没有该字符,将该字符加入窗口中,继续向下遍历,同时更新最长子串长度;
  3. 全部遍历后,返回最长子串长度。

题解代码

class Solution {public:int lengthOfLongestSubstring(string s) {if(s.size() == 0) return 0;unordered_set<char> lookup;   //无序集合,用于存放临时子串int ans = 0;int left = 0;for(int i = 0; i < s.size(); i++){    //滑动窗口,窗口右端每次向右移动一个字符while (lookup.find(s[i]) != lookup.end()){  //若在子串中找到该字符lookup.erase(s[left]);  //此子串不符合条件,窗口最左端元素移出left ++;}ans = max(ans,i-left+1);  //存放最长有效子串的长度lookup.insert(s[i]);}return ans;  }
};

时间复杂度:O(n)
空间复杂度:O(n)

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/daily-temperatures
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

C++解决《无重复字符的最长子串》问题(滑动窗口(unordered_set),string)相关推荐

  1. 【LeetCode】无重复字符的最长子串【滑动窗口法】

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc&qu ...

  2. LeetCode 3. 无重复字符的最长子串(滑动窗口+哈希)

    1. 题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 " ...

  3. 无重复字符的最长子串_滑动窗口

    思路: 这道题主要用到思路是:滑动窗口. 其实就是一个队列,比如例题中的 abcabcbb,进入这个队列(窗口)为 abc 满足题目要求,当再进入 a,队列变成了 abca,这时候不满足要求.所以,我 ...

  4. 10.无重复字符的最长子串---使用滑动窗口方法和哈希表来解决

    一.解题方法:滑动窗口 1.本题可以使用双层for循环暴力破解,但是时间复杂度很高,会达到O(n^2),所以采用滑动窗口的方法来降低时间复杂度. 2.定义一个HashMap数据集合,其中key值为字符 ...

  5. 利用滑动窗口法解决无重复字符的最长子串

    无重复字符的最长子串 题目描述: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最 ...

  6. [剑指offer]面试题第[48]题[Leetcode][JAVA][第3题][无重复字符的最长字串][滑动窗口][HashSet/Map]

    [问题描述][第3题][无重复字符的最长字串] 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度.示例 1:输入: "abcabcbb" 输出: 3 解释: 因为无重 ...

  7. LeetCode 3.无重复字符的最长字串(滑动窗口)

    题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "a ...

  8. leetcode 395. 至少有 K 个重复字符的最长子串(滑动窗口)

    给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不少于 k .返回这一子串的长度. 示例 1: 输入:s = "aaabb", ...

  9. c++ 数组的输入遇到特定字符停止输入_滑动窗口思维--挑战“无重复字符的最长子串”

    文章来源: 饭饭的Python学习之路 作者: 一粒米饭 今天要挑战的是"无重复字符的最长子串". 难度:中等 题目描述: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 ...

  10. Leetcode刷题100天—3. 无重复字符的最长子串(滑动窗口+集合+双指针)—day21

    前言: 作者:神的孩子在歌唱 大家好,我叫运智 3. 无重复字符的最长子串 难度中等6009收藏分享切换为英文接收动态反馈 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度. 示例 ...

最新文章

  1. Lecture 0 --基本说明
  2. WPF的图片操作效果(一):RenderTransform
  3. MongoDb Windows linux平台环境及主流编程语言驱动安装同时配置mongoDb的远程连接
  4. android 小知识点
  5. 【LeetCode】LC1408:一维数组的动态和
  6. fastjson对json操作
  7. SPOJ.TLE - Time Limit Exceeded(DP 高维前缀和)
  8. HTML4和HTML5的区别[转]
  9. Silverlight学习笔记(3):Silverlight的界面布局
  10. 【H.264/AVC视频编解码技术】第六章【指数哥伦布编码】
  11. IronPython资料
  12. 源码分析Thread
  13. 猴子选大王 java,PAT-JAVA-5-28 猴子选大王 (20分)
  14. ilitek win10 触摸屏驱动_想做多大尺寸触摸框找融创方圆定制触摸屏工厂
  15. 组合数学 —— 容斥定理
  16. 【JAVA 第三章 流程控制语句】课后习题 找零钱
  17. bzoj3442学习小组
  18. 多头借贷数据在风控中如何分析及应用
  19. JAVA的MySQL字符串拼接_MySQL字符串拼接、截取
  20. 关于.net dll文件反编译

热门文章

  1. ios系统脚本服务器加速,让iOS系统加速飞起来 speed intensifier插件让iOS系统加速
  2. 基础算法优化——Fast Modular Multiplication
  3. iOS中制作一张水印图片
  4. 广州羚羊社科技跑付app健身中心开业,涉足健身领域,人头爆满全场热销
  5. 如何去掉抖音短视频水印----全网最好用的去抖音视频水印方法
  6. 阿里云ECS主机部署LAMP环境
  7. 全民程序员时代来了吗?解锁低代码流行背后的秘密
  8. 文化先锋A6客户端自动登陆
  9. FPD-LINK网上搜集的相关资料链接(持续更新)
  10. python 爬虫《百炼成佛》爬虫入门 (爬虫介绍)第一个爬虫程序