题解 | #最长不含重复字符的子字符串#

最长不含重复字符的子字符串

https://www.nowcoder.com/practice/48d2ff79b8564c40a50fa79f9d5fa9c7

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @return int整型
     */
    int lengthOfLongestSubstring(string s) {
        // write code here
        // 滑动窗口,定义左右指针,没重复的字符就右指针右移扩大窗口,
        // 窗口内出现重复字符,左指针移动到重复字符的下一个位置上
        // 每一步都更新最长子字符串长度
        // 存储字符和最新的索引
        unordered_map<char, int> charIndexMap;
        int maxLength = 0; // 最长子字符串长度
        int left = 0;

        for (int right = 0; right < s.length(); ++right) {
            char currentChar = s[right];

            // 如果字符已经存在且其索引还在窗口范围内,移动左指针
            if (charIndexMap.find(currentChar) != charIndexMap.end()
                && charIndexMap[currentChar] >= left) {
                    left = charIndexMap[currentChar] + 1;
                }
            
            // 更新字符最新的索引
            charIndexMap[currentChar] = right;

            // 计算当前无重复字符子字符串长度
            maxLength = max(maxLength, right - left + 1);
        }

        return maxLength;
    }
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-19 20:55
因为业务不是喜欢的,所以就没去,现在实习工作也有很多dirtywork,很后悔,怎么能舔回这个offer啊
flmz_Kk:试一试跟hr舔回来,不过保不齐米的活也有很多dirtywork,只能说不要美化自己没走过的路
点赞 评论 收藏
分享
点赞 评论 收藏
分享
能干的三文鱼刷了100道题:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-20 14:55
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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