zoukankan      html  css  js  c++  java
  • [LintCode] Longest Substring Without Repeating Characters

    Given a string, find the length of the longest substring without repeating characters.

    Example

    For example, the longest substring without repeating letters for"abcabcbb" is "abc", which the length is 3.

    For "bbbbb" the longest substring is "b", with the length of 1.

    Challenge 

    O(n) time

    LeetCode上的原题,请参见我之前的博客Longest Substring Without Repeating Characters

    解法一:

    class Solution {
    public:
        /**
         * @param s: a string
         * @return: an integer 
         */
        int lengthOfLongestSubstring(string s) {
            int res = 0, left = -1;
            vector<int> m(256, -1);
            for (int i = 0; i < s.size(); ++i) {
                left = max(left, m[s[i]]);
                m[s[i]] = i;
                res = max(res, i - left);
            }
            return res;
        }
    };

    解法二:

    class Solution {
    public:
        /**
         * @param s: a string
         * @return: an integer 
         */
        int lengthOfLongestSubstring(string s) {
            int res = 0, left = 0, right = 0;
            unordered_set<char> st;
            while (right < s.size()) {
                if (!st.count(s[right])) {
                    st.insert(s[right++]);
                    res = max(res, (int)st.size());
                } else {
                    st.erase(s[left++]);
                }
            }
            return res;
        }
    };
  • 相关阅读:
    梯度下降法
    超平面
    感知机模型
    三角不等式
    统计学习方法基本概念
    Kaggle 的注册和使用
    win10 部署 Anaconda
    全概率和贝叶斯公式
    行列式
    伴随矩阵
  • 原文地址:https://www.cnblogs.com/grandyang/p/5958762.html
Copyright © 2011-2022 走看看