最长重复子串(Leetcode)

Problem: *************

alt

思路

解决此题的方法是需要用到哈希表作为辅助记录,之所以选择哈希表作为辅助记录容器主要是因为查找时间复杂度为O(1)O(1),然后使用滑动窗口的方法找到本题中的最长子串。

解题方法

解决方法是使用双指针管理子串的两个边界:

[a b c] a b c b b

a [b c a] b c b b

a b [c a b] c b b

a b c [a b c] b b

a b c a b [c b] b

a b c a b c b [b]

当右边界遇到出现过的字符时,左边界滑动到相同的字符位置的下一个位置,然后在哈希表中将相应的字符删除掉,保证子串字符不重复,至到循环结束。

复杂度

  • 时间复杂度:

遍历字符串一次,因此时间复杂度为O(n)O(n)

  • 空间复杂度:

使用到了哈希表,因此空间复杂度为O(n)O(n)

Code


class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int n=s.size();
        if(n==0) return 0;
        int left=0,right=0,ans=0;
        unordered_map<char,int> m;
        while(right<n)
        {
            ++m[s[right]];
            while(m[s[right]]>1)
            {
                --m[s[left++]];
            }
            ans=max(ans,right-left+1);
            ++right;
        }
        return ans;
    }
};

在本题的基础上还可以进行拓展,我们将输出改为输出最长子串本身而不是长度:

Code

​
class Solution {
public:
    string lengthOfLongestSubstring(string s) {
        int n=s.size();
        if(n==0) return 0;
        int left=0,right=0,ans=0;
        string str;
        unordered_map<char,int> m;
        while(right<n)
        {
            ++m[s[right]];
            while(m[s[right]]>1)
            {
                --m[s[left++]];
            }
            str=right-left+1>ans?s.substr(left,right):str;//必须在ans更新的前面
            ans=max(ans,right-left+1);
            ++right;
        }
        return str;
    }
};
Leetcode刷题整合 文章被收录于专栏

都是作者刷到的一些感觉是好题整理到一起的,辛苦整理不易,麻烦给个赞,有疑问请留言

全部评论

相关推荐

Ryan188:我觉得你简历最核心的问题就是太大众化。 你要有一个认知就是,如果你是面试官,你是HR,其实他们每天都会收到非常多大量重复的像你这种简历。 就是说你的项目不是一个真实的上线的项目,可能是从网上学习而来的,或者是直接copy别人的项目,没有新意,没有展现出你自己对技术的思考,而且你的学历也不占优,自然而然就很难有人去选择你。 所以要做的实际上是差异化方向的工作,也就是“给我一个选择你的理由”,比如最近很火的ai,你可以写一个ai相关项目比如问答应用或者mcp编写或者agent搭建,需要你先花点时间学习,34天吧,展现你对这方面相较于其他人特有的思考; 或者写相关技术博客输出一些技术内容,有具体可以量化的成果等等去增加你的竞争力。 但以上这些都是后话,我去年在你这个时候也是没人理我,咱们双非学历也没实习,难找也正常,我当时整个3月份都没人鸟我,直到有个新招的岗位,很缺人很急,流程很快,所以我一下子进去了,所以运气方面也很重要,需要你一直坚持喝复盘,直到看到光明,加油兄弟
简历被挂麻了,求建议
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
正在热议
更多
# 春招至今,你的战绩如何? #
13554次浏览 131人参与
# AI面会问哪些问题? #
797次浏览 19人参与
# MiniMax求职进展汇总 #
24585次浏览 313人参与
# 你的实习产出是真实的还是包装的? #
2408次浏览 47人参与
# AI时代,哪个岗位还有“活路” #
2457次浏览 48人参与
# 长得好看会提高面试通过率吗? #
2297次浏览 39人参与
# 巨人网络春招 #
11455次浏览 224人参与
# 你做过最难的笔试是哪家公司 #
987次浏览 18人参与
# HR最不可信的一句话是__ #
896次浏览 31人参与
# 沪漂/北漂你觉得哪个更苦? #
882次浏览 29人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7887次浏览 43人参与
# XX请雇我工作 #
51097次浏览 171人参与
# 简历中的项目经历要怎么写? #
310744次浏览 4246人参与
# 简历第一个项目做什么 #
31952次浏览 354人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152720次浏览 888人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187478次浏览 1123人参与
# AI时代,哪些岗位最容易被淘汰 #
64385次浏览 857人参与
# 如果重来一次你还会读研吗 #
229936次浏览 2011人参与
# 正在春招的你,也参与了去年秋招吗? #
364020次浏览 2640人参与
# 腾讯音乐求职进展汇总 #
160792次浏览 1114人参与
# 你怎么看待AI面试 #
180514次浏览 1286人参与
# 投格力的你,拿到offer了吗? #
178023次浏览 889人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务