C++版- Leetcode 3. Longest Substring Without Repeating Characters解题报告 编辑

Leetcode 3. Longest Substring Without Repeating Characters

 

提交网址: https://leetcode.com/problems/longest-substring-without-repeating-characters/

Total Accepted: 149135 Total Submissions: 674678 Difficulty: Medium

Given a string, find the length of the longest substring without repeating characters.

Examples:

Given "abcabcbb", the answer is "abc", which the length is 3.

Given "bbbbb", the answer is "b", with the length of 1.

Given "pwwkew", the answer is "wke", with the length of 3. Note that the answer must be a substring"pwke" is a subsequence and not a substring.


分析:

使用哈希表,保存每个字符上一次出现的位置,时间复杂度为O(n).



AC代码:

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int loc[256];     // 哈希表保存字符上一次出现的位置,ASCII码是8位,一般用前7位,是128(2^7)个可用字符。IBM机器的扩展使用了最高位,故用2^8个(256)
        memset(loc, -1, sizeof(loc));
        
        int curStartIdx = -1, max_len = 0;  //curStartIdx为当前子串的开始位置,初始化为-1
        for(int i = 0; i < s.size(); i++)
        {
            if(loc[s[i]] > curStartIdx)  //如果当前字符出现过,那么当前子串的起始位置为这个字符上一次出现的位置+1
            {
                curStartIdx = loc[s[i]];
            }
            if(i - curStartIdx > max_len)  // 使用贪心算法进行子串延伸,关键!!!
            {
                max_len = i - curStartIdx;
            }
            loc[s[i]] = i;  //如果当前字符没出现过,将其位置记录在loc数组中 
        }
        return max_len;
    }
};


You are here! 
Your runtime beats 61.72% of cppsubmissions.





作者:极客玩家
出处:https://geekplayers.com

如果,您希望更容易地发现我的新文章,不妨点击一下绿色通道的关注我,亦可微信搜索公众号大白技术控关注我。

如果您觉得阅读本文对您有帮助,请点击一下右下方的推荐按钮,您的推荐将是我写作的最大动力!
版权声明:本文为博主原创或转载文章,欢迎转载,但转载文章之后必须在文章页面明显位置注明出处,否则保留追究法律责任的权利。如您有任何疑问或者授权方面的协商,请          .
posted @   大白技术控  阅读(223)  评论(0编辑  收藏  举报
编辑推荐:
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
阅读排行:
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!

打赏

>>

欢迎打赏支持我 ^_^

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示