zoukankan      html  css  js  c++  java
  • 3. 无重复字符的最长子串 字符串

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

    示例 1:

    输入: "abcabcbb"
    输出: 3
    解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
    示例 2:

    输入: "bbbbb"
    输出: 1
    解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
    示例 3:

    输入: "pwwkew"
    输出: 3
    解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
      请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    我们先用一个例子来想一想如何在较优的时间复杂度内通过本题。

    我们不妨以示例一中的字符串 exttt{abcabcbb}abcabcbb 为例,找出 从每一个字符开始的,不包含重复字符的最长子串,那么其中最长的那个字符串即为答案。对于示例一中的字符串,我们列举出这些结果,其中括号中表示选中的字符以及最长的字符串:

    以 exttt{(a)bcabcbb}(a)bcabcbb 开始的最长字符串为 exttt{(abc)abcbb}(abc)abcbb;
    以 exttt{a(b)cabcbb}a(b)cabcbb 开始的最长字符串为 exttt{a(bca)bcbb}a(bca)bcbb;
    以 exttt{ab(c)abcbb}ab(c)abcbb 开始的最长字符串为 exttt{ab(cab)cbb}ab(cab)cbb;
    以 exttt{abc(a)bcbb}abc(a)bcbb 开始的最长字符串为 exttt{abc(abc)bb}abc(abc)bb;
    以 exttt{abca(b)cbb}abca(b)cbb 开始的最长字符串为 exttt{abca(bc)bb}abca(bc)bb;
    以 exttt{abcab(c)bb}abcab(c)bb 开始的最长字符串为 exttt{abcab(cb)b}abcab(cb)b;
    以 exttt{abcabc(b)b}abcabc(b)b 开始的最长字符串为 exttt{abcabc(b)b}abcabc(b)b;
    以 exttt{abcabcb(b)}abcabcb(b) 开始的最长字符串为 exttt{abcabcb(b)}abcabcb(b)。

    作者:LeetCode-Solution
    链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/solution/wu-zhong-fu-zi-fu-de-zui-chang-zi-chuan-by-leetc-2/
    来源:力扣(LeetCode)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    class Solution {
    public:
        int lengthOfLongestSubstring(string s) {
            unordered_set <char> st;
            int n = s.size();
    
            int ans = 0;
            int r = -1;
            for (int l = 0; l < n; l++) {
                if (l != 0) {
                    st.erase(s[l - 1]);
                }
                while (r + 1 < n && !st.count(s[r + 1])) {
                    st.insert(s[r + 1]);
                    r++;
                }
                ans = max(ans, r - l + 1);
            }
    
            return ans;
        }
    };
    
  • 相关阅读:
    【秒懂音视频开发】10_PCM转WAV
    【秒懂音视频开发】09_播放PCM
    【秒懂音视频开发】08_音频录制02_编程
    【秒懂音视频开发】07_音频录制01_命令行
    【秒懂音视频开发】06_Qt开发基础
    高考数学考点关联表[Ⅳ]
    高考数学考点关联表[Ⅲ]
    高考数学考点关联表[Ⅱ]
    高考数学考点关联表[Ⅰ]
    反比例函数
  • 原文地址:https://www.cnblogs.com/xgbt/p/13701351.html
Copyright © 2011-2022 走看看