首页 > 其他 > 详细

LeetCode-3:Longest Substring Without Repeating Characters

时间:2018-08-24 21:06:03      阅读:247      评论:0      收藏:0      [点我收藏+]

描述:给一个字符串s,找到它的最长子串(无任何字符重复)substring的长度。

举例:

    Input: "abcabcbb"

    Output: 3

    Explanation: The answer is "abc", which the length is 3.

思路:

    我的做法是从左至右扫描,设repeat[c],记录字符c上一次在字符串s中出现的位置。假设现在正在扫描s[j]字符,而之前已经记录s[i,j-1]都未出现任何重复字符。假设检测到s[j]上一次出现的位置repeat[j]在区间[i,j-1]内,那么可以截取子串s[i,j-1]并与当前smax做优选。接着我们可以从repeat[j]开始,更新区间为s[repeat[j]+1,j]并继续向后扫描处理。

    官方的思路其实跟我的一致,不过叙述上有所差别。它提出了滑动窗口SliddingWindow的概念,并且使用HashSet存储窗口P[i,j)内的所有未重复字符。当发现s[j]在HashSet中重复时就要动态更新窗口下限i,尽可能大地向右滑动。详见:https://leetcode.com/problems/longest-substring-without-repeating-characters/solution/

 

 

LeetCode-3:Longest Substring Without Repeating Characters

原文:https://www.cnblogs.com/Jackie-Snow/p/9531958.html

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