剑指 Offer 48. 最长不含重复字符的子字符串

news/2024/12/2 10:34:14/

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

示例 1:

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

示例 2:

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

示例 3:

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

思路:

dp数组的含义:以第i个字符结尾的不含重复字符的子字符的最大长度
1.如果当前字符首次出现,那么dp[i] = dp[i - 1] + 1
2.如果当前字符和哈希表中记录的发生重复,计算当前字符位置与前边重复的字符位置的距离,这里分为两种情况
(1)i - umap[s[i]] > dp[i - 1]如果当前的位置减去上次的位置大于dp[i - 1],说明重复的字符已经不在之前的子串了,
因此dp[i] = dp[i - 1] + 1
(2)i - umap[s[i]] <= dp[i - 1]如果小于等于,说明还在当前的dp[i - 1]子串中,则dp[i] = i - umap[i];
3.更新一下哈希表
4.取出最大的长度。

class Solution {
public:int lengthsubstr(string s) {if (s.size() == 0 || s.size() == 1)return s.size();unordered_map<char, int> umap;vector<int> dp(s.size(), 0);int max_value = 0;dp[0] = 1;umap[s[0]] = 0;for (int i = 1; i < s.size(); i++) {//没记录过上一个位置,说明第一次出现 肯定可以连接dp[i-1]if (umap.find(s[i]) == umap.end()) {dp[i] = dp[i - 1] + 1;}//记录过上一个位置。它有两种可能(1)在dp[i-1]的范围外。(2)在dp[i-1]里面else {if (i - umap[s[i]] > dp[i - 1]) {//上一个位置不在dp[i-1]范围内 ,可以直接连起来dp[i] = dp[i - 1] + 1;}else {//上一个位置在dp[i-1]范围内 ,则长度 = 这个位置-上一个位置dp[i] = i - umap[s[i]];}}umap[s[i]] = i;max_value = max(max_value, dp[i]);}return max_value;}
};int main() {string s = "abcabcbb";Solution ss;cout << ss.lengthsubstr(s) << endl;return 0;
}

http://www.ppmy.cn/news/212017.html

相关文章

家用、商用、工业交换机的用途与区别

以太网交换机一般分为&#xff1a;商用(以太网)交换机、工业(以太网)交换机、家用(以太网)交换机。那么&#xff0c;家用交换机&#xff0c;商业交换机&#xff0c;工业交换机之间有什么区别呢&#xff1f;接下来我们就跟随飞畅科技的小编一起来详细了解下吧&#xff01; 商用…

工业交换机和商用交换机对比

工业交换机是为了满足工业应用需求而专门设计的交换机&#xff0c;因为工业环境较为恶劣&#xff0c;且需要的性能也要比一般的交换机高。所以工业交换机要比商用交换机要的性能要稳定&#xff0c;需要耐受严苛的工作环境。工业交换机产品采用宽温设计&#xff0c;防护等级不低…

【owt】WebrtcNode, subscribe-sdp offer 流程(1)

sdp offer 流程 1. AmqpClient - New message received sdp offer 的消息 2023-04-26T21:54:19.790 - DEBUG: AmqpClient - RpcServer New message received {method: onTransportSignaling,args: [b149e44bb10d4e91bd162a8c6806ae7b,{sdp: v0\r\n o- 7177131362423164715 …

5G SS/PBCH block 笔记

对于PBCH payload来说

5G系统特色业务应用

目录 1、未来移动通信主要业务 2、场景与业务选择原则 3、物联网业务与用户需求

【5G RRC】5G 切换(handover)那点事儿

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

5G学习笔记之名词解析

参考&#xff1a;协议383001. 不知道写什么标题&#xff0c;就这样吧 5GC&#xff1a;5G Core Network&#xff0c;5G核心网。 5GS&#xff1a;5G system&#xff0c;5G系统。 NR&#xff1a;New Radio&#xff0c;新空口。 NG-RAN&#xff1a;Next Generation Radio Access…