码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • leetcode 3. 无重复字符的最长子串


    2023.9.15

            本题我用的暴力双层for循环 + unordered_set 解决的,外循环控制字符起始位置,内循环将字符放入 unordered_set,并查找有无重复的元素。  用了一个全局变量记录最长字串的长度,局部变量count记录当前层循环的最长子串长度。 代码如下:

    1. class Solution {
    2. public:
    3. int lengthOfLongestSubstring(string s) {
    4. if(s.size() == 0) return 0;
    5. int ans = 1;
    6. for(int i=0; isize(); i++)
    7. {
    8. unordered_set<char> set;
    9. set.insert(s[i]);
    10. int count = 1;
    11. for(int j=i+1; jsize(); j++)
    12. {
    13. if(set.find(s[j]) == set.end()) //没找到重复元素
    14. {
    15. count++;
    16. set.insert(s[j]);
    17. ans = max(ans , count);
    18. }
    19. else break;
    20. }
    21. }
    22. return ans;
    23. }
    24. };

            暴力循环+每层循环都用了unordered_set,可想而知,时间和空间消耗都相当高... 

            看了下别人的解法,这题还可以用滑动窗口来做。定义一个left指针指向滑动窗口的最左端,for循环的i向前遍历。每当发现重复元素,就不断将set头部元素删除,直到没有重复元素位置。最后不断更新最长子串的长度即可。

            代码如下:

    1. class Solution {
    2. public:
    3. int lengthOfLongestSubstring(string s) {
    4. if(s.size() == 0) return 0;
    5. queue<char> que;
    6. int ans = 1;
    7. int left = 0;
    8. for(int i=0; isize(); i++)
    9. {
    10. while(set.find(s[i]) != set.end()) //找到重复元素了
    11. {
    12. set.erase(s[left]);
    13. left++;
    14. }
    15. set.insert(s[i]);
    16. ans = max(ans , i-left+1);
    17. }
    18. return ans;
    19. }
    20. };

  • 相关阅读:
    11 月亚马逊云科技培训与认证课程,精彩不容错过!
    WMS系统4.0,仓库管理的20年历史变局你知道吗?
    解决ffmpeg的播放摄像头的延时优化问题(项目案例使用有效)
    NSubstitute:一个简单易用、灵活多变的.NET单元测试模拟框架
    java垃圾回收机制
    ELK 企业级日志分析系统
    力扣 轮转数组三段逆置法和三段拷贝法(C语言)
    php公用方法
    【C++内存管理】
    Linux CentOS 8.x 生成rsa公私密钥
  • 原文地址:https://blog.csdn.net/m0_61028090/article/details/132898340
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号