首页 > 其他 > 详细

3. Longest Substring Without Repeating Characters

时间:2019-11-03 14:40:52      阅读:82      评论:0      收藏:0      [点我收藏+]

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\n",i,j);
            res=max(res,j-i+1);
            ++j;
        }
        return res;
    }
};

 

 

3. Longest Substring Without Repeating Characters

原文:https://www.cnblogs.com/lychnis/p/11785615.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!