LeetCode 每日一题 3. 无重复字符的最长子串

  大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客

本文原创为亓官劼,请大家支持原创,部分平台一直在盗取博主的文章!!!

博主目前仅在CSDN中写博客,唯一博客更新的地址为:亓官劼的博客


题目

难度 中等

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

示例 1:

输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例 2:

输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3:

输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

题解

  这里求最长的无重复字串,我们可以使用滑动窗口来进行求解,设置两个指针,左指针为起始位置,右指针为结束位置。左指针从0开始,枚举所有可能的起始位置,然后右移一个位置,然后右指针为当前最大字串的结束的位置,我们每次移动完左指针之后,来移动右指针,直到当前的字串有重复的字符的时候,停止,停止的时候右指针不移动。这里使用set来判断当前子串是否有重复字符,完整的题解代码为:

class Solution {public:int lengthOfLongestSubstring(string s) {// 使用集合来记录当前字串,并且判断是否有重复的字符set<char> store;// n为string s的长度int n = s.size();// 使用end来记录右面的边界,即充当右指针的作用int end = -1;// 使用ans来记录最大字串长度int ans = 0;// 枚举左指针的位置for (int i = 0; i < n; ++i) {// 当左指针不为0时,每次运行完之后,左指针右移// 这里0不动的原因是这里的右指针初始为-1,这里的左指针隐含的为-1,所以左指针为0时不动if (i != 0) {// 左指针向右移动一格,移除一个字符store.erase(s[i - 1]);}// 一直移动右指针,直到有重复的元素while (end + 1 < n && !store.count(s[end + 1])) {store.insert(s[end + 1]);// 右移动右指针++end;}// 第 i 到 end 个字符是的当前起始位置的最长字串,然后和ans比较,取大的值ans = max(ans, end - i + 1);}return ans;}
};

  大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客

本文原创为亓官劼,请大家支持原创,部分平台一直在盗取博主的文章!!!

博主目前仅在CSDN中写博客,唯一博客更新的地址为:亓官劼的博客

LeetCode 每日一题 3. 无重复字符的最长子串相关推荐

  1. Leetcode每日一题:3.无重复字符的最长子串

    双指针法 //双指针法 int lengthOfLongestSubstring(string s) {int flag[130] = {0}; //标记数组int countMax = 0; //记 ...

  2. java C++ 实现 leetcode 第三题 3. 无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

    一.C++实现 int lengthOfLongestSubstring(string s) {if (s.length() <= 1)return s.length();int res = 1 ...

  3. (LeetCode刷题)Day03 无重复字符的最长子串

    无重复字符的最长子串 [3. Longest Substring Without Repeating Characters](https://leetcode.com/problems/longest ...

  4. leetcode 刷题 3. 无重复字符的最长子串解题思路

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

  5. 学渣的刷题之旅 leetcode刷题 3. 无重复字符的最长子串(暴力法、滑动窗口)

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

  6. 【每日一算法】无重复字符的最长子串

    微信改版,加星标不迷路! 每日一算法 - 无重复字符的最长子串 思路答案 首先定义一个指针p指向该字符串的链头,然后通过p指针后的第i个字符是否和p指针后的第j个字符相同来取得最大长度.(也叫做完全遍 ...

  7. python经典算法题:无重复字符的最长子串

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

  8. 最长不重复子串python_python经典算法题:无重复字符的最长子串

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

  9. leetcode刷题:无重复字符的最长子串

    题目: 分析: 取巧解法,通过set class Solution { public:int lengthOfLongestSubstring(string s) {if(s.size() == 0) ...

最新文章

  1. Java反射机制简单使用
  2. 简明python教程 豆瓣-Python 有哪些入门学习方法和值得推荐的经典教材?
  3. echart地图配置
  4. SAP技术专家Jerry的技术分享微信群 - 2021年1月14日更新 - 还剩27个名额
  5. 嵌入式Linux多任务编程 进程 管道 命名管道
  6. springboot中缓存技术的使用、原理及其运行流程
  7. 《Redis+Nginx+设计模式+Spring全家桶+Dubbo》,附 PDF amp; 简历模板 下载
  8. Tensorlfow的可视化工具TensorBoard
  9. Ruby 对字符串进行转码
  10. 腾达n3_腾达n3迷你路由参数
  11. asp.net 转换人民币大小金额
  12. python中tree安装_Python 学习笔记:Jupyter Notebook 的安装使用以及 tree 路径变更
  13. (转)CocosCreator零基础制作游戏《极限跳跃》五、制作游戏主场景背景滚动
  14. bzoj 1260涂色 题解
  15. python蒙特卡洛模拟return_蒙特卡罗方法入门
  16. ABeam中国2022社招 | ABeam旗下艾宾信息技术开发(大连) 最新招聘信息
  17. 持续精进——我的2017年终总结
  18. 视频文件损坏无法播放怎么修复?
  19. ‘海外/国外‘地区微博签到shu据(正题在第二部分)
  20. 一文读懂 NMEA-0183 协议数据

热门文章

  1. 手机工行显示服务器,工行手机银行服务器安全证书验证失败
  2. AttributeError: 'module' object has no attribute 'get_frontal_face_detector'
  3. DJI的核心竞争力是什么?
  4. 为什么需要职场软实力
  5. 简单的模拟电话簿程序(java)
  6. 学生网页作业 web网页设计实例作业 家乡旅游网站设计——家乡旅游-榆林子州(8页) 出游旅游主题度假酒店 计划出行网站设计
  7. Mysql 杂文记事
  8. 我国路内限时长停车管理可行性研究
  9. bzoj 1984: 月下“毛景树” 线段树+树链剖分
  10. OBD-II协议对比介绍