多一些Aha Time,发现技术的美妙�|

啊原来是这样呀

园龄:8年3个月粉丝:3关注:9

【剑指offer】47.最长不含重复字符的子字符串

总目录:

算法之旅导航目录

 

1.问题描述

请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。
数据范围:

 s.length≤40000

 

2.问题分析

 1迭代统计,使用哈希表用来快速检索是否存在,用双指针来维护左右边界


3.代码实例

复制代码
 1 class Solution {
 2   public:
 3     int lengthOfLongestSubstring(string s) {
 4         //哈希表记录窗口内非重复的字符
 5         unordered_map<char, int> mp;
 6         int res = 0;
 7         //设置窗口左右边界
 8         for (int left = 0, right = 0; right < s.length(); right++) {
 9             //窗口右移进入哈希表统计出现次数
10             mp[s[right]]++;
11 
12             //出现次数大于1,则窗口内有重复
13             while (mp[s[right]] > 1) {
14                 //窗口左移,同时减去该字符的出现次数
15                 mp[s[left]]--;
16                 left++;
17             }
18 
19             //维护子串长度最大值
20             res = max(res, right - left + 1);
21         }
22         return res;
23     }
24 };
复制代码

 

本文作者:啊原来是这样呀

本文链接:https://www.cnblogs.com/OhOfCourse/p/16909391.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   啊原来是这样呀  阅读(16)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起