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. ArduinoYun教程之OpenWrt-Yun与CLI配置Arduino Yun
  2. 前端服务器OWA 访问显示异常最佳解决方案
  3. 从技术角度讨论微服务
  4. python代码该怎么简化_Python开发简化代码的六大技巧
  5. 软件工程方法学要素含义_日期时间数据的要素工程
  6. python二进制移位_python学习特辑——二进制和位运算篇
  7. android samba github,安卓手机访问树莓派samba文件共享出错解决
  8. imgaug: 一个很有用的图像数据增强库
  9. 蓝桥每日真题之完全平方数
  10. Java集合:HashMap详解(JDK 1.8)
  11. 计算机等级考试数据库三级知识点吐血总结!!!
  12. 高德地图提示com.autonavi.amap.mapcore.MapCore.nativeNewInstance问题
  13. c语言课后第七章习题,c语言课后习题第7章函数
  14. 南邮java实验_南邮JAVA程序设计实验4 线程程序设计(指针式时钟)
  15. smart gesture安装失败_从安装到打印HP 108w操作详解
  16. tableau数据分析
  17. 怀孕用计算机来算周期怎么算,怀孕周期计算器公式
  18. Python中获取两数相除的商和余数
  19. linux系统怎么远程进服务器
  20. 办公自动化:PDF文件合并器,用Python将多个PDF文件进行合并

热门文章

  1. Uva 10559 消除方块
  2. The Moo Particle
  3. RS-一般推荐(CF系列)-2018:GCMC
  4. 在Mavne环境下,实现struts2和hibernate的NVN关系的注解式开发?
  5. Hibernate 多对多的增删改查。
  6. python作用域的理解-python中对变量的作用域LEGB、闭包、装饰器基本理解
  7. android 左测设置功能,iqoo手机左边按键有什么作用?iqoo手机左侧按键介绍
  8. SEO的职业发展规划及SEO优化未来的发展方向是什么?
  9. 在1705年第一个电灯泡是如何被发明的?
  10. 试题B:灭鼠先锋[博弈]