双指针

【剑指 offer】最长不含重复字符的子字符串(双指针)

2019-05-04  本文已影响0人  邓泽军_3679

1、题目描述

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

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

样例:

输入:"abcabc"
输出:3

2、问题描述:

3、问题关键:

4、C++代码:

class Solution {
public:
    int longestSubstringWithoutDuplication(string s) {
        unordered_map<char, int> m;//hash表便于查找。
        int res;
        for (int i = 0, j = 0; j < s.size(); j ++) {
            while(m[s[j]]) m[s[i ++]] --;//如果出现重复的,那么移动i直到不再出现重复的为止。
            m[s[j]] = 1;//否则,记录到hash表中,
            res = max(res, j - i + 1);//记录最长的区间。
        }
        return res;
    }
};
上一篇下一篇

猜你喜欢

热点阅读