zoukankan      html  css  js  c++  java
  • 3. Longest Substring Without Repeating Characters

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

    Example 1:

    Input: "abcabcbb"
    Output: 3 
    Explanation: The answer is "abc", with the length of 3. 
    

    Example 2:

    Input: "bbbbb"
    Output: 1
    Explanation: The answer is "b", with the length of 1.
    

    Example 3:

    Input: "pwwkew"
    Output: 3
    Explanation: The answer is "wke", with the length of 3. 
                 Note that the answer must be a substring, "pwke" is a subsequence and not a substring.



    常规做法, 称之为双指针吧,i和j, 每次移动j, 如果有重复的则把i往右移动,
    class Solution {
    public:
        int lengthOfLongestSubstring(string s) {
            unordered_map<char,int> table;
            int res=0;
            for(int i=0,j=0;i<=j&&j<s.size();)
            {
                auto iter=table.find(s[j]);
                if(table.end()!=iter)
                {
                    i=max(i,iter->second+1); //尤其注意这里的max, 不然i有可能变小
                    iter->second=j;
                }
                else
                {
                    table[s[j]]=j;
                }
                printf("%d %d
    ",i,j);
                res=max(res,j-i+1);
                ++j;
            }
            return res;
        }
    };
     
  • 相关阅读:
    2019-9-2-win10-uwp-Markdown
    2018-8-10-控件
    2018-8-10-win10-uwp-dataGrid
    2018-2-13-win10-uwp-hashcash
    2018-2-13-git-cannot-lock-ref
    UCOSIII系统内部任务
    UCOSIII时间片轮转调度
    Keil MDK fromelf生成bin文件
    UCOS内存管理
    uavcan扩展帧格式 zubax
  • 原文地址:https://www.cnblogs.com/lychnis/p/11785615.html
Copyright © 2011-2022 走看看