美文网首页
剑指offer 49- 最长不含重复字符的子字符串

剑指offer 49- 最长不含重复字符的子字符串

作者: 顾子豪 | 来源:发表于2021-05-29 01:01 被阅读0次

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

    假设字符串中只包含从 a 到 z 的字符。
    样例

    输入:"abcabc"
    
    输出:3
    

    分析:双指针算法
    i,j两个指针,当j指针大于1以后,i++,直到j指针所在的字符等于1
    时间复杂度:
    O({N})

    class Solution {
    public:
        int longestSubstringWithoutDuplication(string s) {
            int res=0;
            unordered_map<char, int> hash;
            //i,j两个指针,当j指针大于1以后,i++,直到j指针所在的字符等于1
            for(int i=0,j=0;j<s.size();j++) {
                hash[s[j]]++;
                while(hash[s[j]] > 1) hash[s[i++]]--;
                res = max(res, j-i+1);
            }
            return res;
        }
    };
    

    相关文章

      网友评论

          本文标题:剑指offer 49- 最长不含重复字符的子字符串

          本文链接:https://www.haomeiwen.com/subject/myrbjltx.html