最大不具有重复字符的子串

longest-substring-without-repeating-characters

http://www.nowcoder.com/questionTerminal/5947ddcc17cb4f09909efa7342780048

借助map辅助,用map记录每一个字符的最大的下标,用left记录没有重复字符子串的起始位置,空间复杂度和时间复杂度均为O(n)。

class Solution {
public:
    /**
     *
     * @param s string字符串
     * @return int整型
     */
    int lengthOfLongestSubstring(string s) {
        // write code here
        int size = s.size();
        if (size < 1) return 0;
        unordered_map<char, int> um;
        int maxLen = 0, left = 0;       // left记录上一个没有重复的位置
        for (int i = 0; i < size; ++i) {
            if (um.find(s[i]) != um.end()) {    // 如果在map里
                left = max(left, um[s[i]] + 1);
            }
            maxLen = max(maxLen, i - left + 1);
            um[s[i]] = i;
        }
        return maxLen;
    }
};
刷遍天下无敌手 文章被收录于专栏

秋招刷题历程

全部评论

相关推荐

05-25 10:45
门头沟学院 Java
Frank_zhan...:没实习一个项目肯定不够,可以再做一个轮子,技术栈再补一个mq,微服务,整体再换个简历模板,暑期尽量再找一个日常实习
无实习如何秋招上岸
点赞 评论 收藏
分享
07-09 18:28
门头沟学院 Java
写着提前批,结果还要实习4个月以上???
程序员牛肉:这种不用看,直接投了,面试的时候问对应的HR就行。有可能他们是直接复制的暑期实习的模板。
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务