LeetCode 每日一题 3. 无重复字符的最长子串
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. 无重复字符的最长子串相关推荐
- Leetcode每日一题:3.无重复字符的最长子串
双指针法 //双指针法 int lengthOfLongestSubstring(string s) {int flag[130] = {0}; //标记数组int countMax = 0; //记 ...
- java C++ 实现 leetcode 第三题 3. 无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
一.C++实现 int lengthOfLongestSubstring(string s) {if (s.length() <= 1)return s.length();int res = 1 ...
- (LeetCode刷题)Day03 无重复字符的最长子串
无重复字符的最长子串 [3. Longest Substring Without Repeating Characters](https://leetcode.com/problems/longest ...
- leetcode 刷题 3. 无重复字符的最长子串解题思路
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc&q ...
- 学渣的刷题之旅 leetcode刷题 3. 无重复字符的最长子串(暴力法、滑动窗口)
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc&qu ...
- 【每日一算法】无重复字符的最长子串
微信改版,加星标不迷路! 每日一算法 - 无重复字符的最长子串 思路答案 首先定义一个指针p指向该字符串的链头,然后通过p指针后的第i个字符是否和p指针后的第j个字符相同来取得最大长度.(也叫做完全遍 ...
- python经典算法题:无重复字符的最长子串
题目:无重复字符的最长子串. 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子 ...
- 最长不重复子串python_python经典算法题:无重复字符的最长子串
题目:无重复字符的最长子串. 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子 ...
- leetcode刷题:无重复字符的最长子串
题目: 分析: 取巧解法,通过set class Solution { public:int lengthOfLongestSubstring(string s) {if(s.size() == 0) ...
最新文章
- Java反射机制简单使用
- 简明python教程 豆瓣-Python 有哪些入门学习方法和值得推荐的经典教材?
- echart地图配置
- SAP技术专家Jerry的技术分享微信群 - 2021年1月14日更新 - 还剩27个名额
- 嵌入式Linux多任务编程 进程 管道 命名管道
- springboot中缓存技术的使用、原理及其运行流程
- 《Redis+Nginx+设计模式+Spring全家桶+Dubbo》,附 PDF amp; 简历模板 下载
- Tensorlfow的可视化工具TensorBoard
- Ruby 对字符串进行转码
- 腾达n3_腾达n3迷你路由参数
- asp.net 转换人民币大小金额
- python中tree安装_Python 学习笔记:Jupyter Notebook 的安装使用以及 tree 路径变更
- (转)CocosCreator零基础制作游戏《极限跳跃》五、制作游戏主场景背景滚动
- bzoj 1260涂色 题解
- python蒙特卡洛模拟return_蒙特卡罗方法入门
- ABeam中国2022社招 | ABeam旗下艾宾信息技术开发(大连) 最新招聘信息
- 持续精进——我的2017年终总结
- 视频文件损坏无法播放怎么修复?
- ‘海外/国外‘地区微博签到shu据(正题在第二部分)
- 一文读懂 NMEA-0183 协议数据
热门文章
- 手机工行显示服务器,工行手机银行服务器安全证书验证失败
- AttributeError: 'module' object has no attribute 'get_frontal_face_detector'
- DJI的核心竞争力是什么?
- 为什么需要职场软实力
- 简单的模拟电话簿程序(java)
- 学生网页作业 web网页设计实例作业 家乡旅游网站设计——家乡旅游-榆林子州(8页) 出游旅游主题度假酒店 计划出行网站设计
- Mysql 杂文记事
- 我国路内限时长停车管理可行性研究
- bzoj 1984: 月下“毛景树” 线段树+树链剖分
- OBD-II协议对比介绍