LeetCode3
如果饿了就吃,困了就睡,渴了就喝,人生就太无趣了 问题描述: 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是?"wke",所以其长度为 3。 解题思路 1.如图1:初始状态,入参字符串指针 s 。字符串指针 p 和 flag 。计数器 sum 。变量 maxlong 记录最长的长度,没在图中显示。 2.指针 s 每次循环自增,计数器 sum=1 。在指针 s 的每次循环中,指针 flag 记录指针 p 的起始位置, p 通过循环每次自增+1,比较与 s 位置的值是否相同,不相同计数器+1。 p 每次移动到与 s 相差1个距离就结束。将 sum 与 maxLong 相比较,若是比 maxLong 大,将值赋给 maxLong 。在将 p 移动到 flag 的位置,准备下一次 s 的循环。 3.若是在 p 移动的过程中, p 所在位置值与 s 所在位置的值相同,就将 flag 移动到 p 后边的一个位置。并将 sum 置1。 s 本次循环结束后,将 p