算法题目(JS)-3.Longest Substring Without Repeating Characters

3. Longest Substring Without Repeating Characters

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

Examples:

Given "abcabcbb", the answer is "abc", which the length is 3.

Given "bbbbb", the answer is "b", with the length of 1.

Given "pwwkew", the answer is "wke", with the length of 3. Note that the answer must be a substring, "pwke" is a subsequenceand not a substring.

问题描述,返回一个字符串中,不包含重复字符,最长的子字符串的长度。

例如,"pwwkew",最长的不重复的字符串就是wke,所以返回3.

解法1:

这个方法可能是大部分第一时间想到的,定义一个空数组,然后定义    i=0,    j=i+1,两个循环嵌套,然后判断数组是否包含,如果不包含,加入数组,包含,就退出第二层循环,比较上一次的长度。这个方法的时间复杂度要有n的3次方,所以不推介。

算法题目(JS)-3.Longest Substring Without Repeating Characters_第1张图片

解法2:

其实这是一个数学问题。相应最简单的解法,就是定义i=0,j=0然后定义一个HashSet,然后从j=0开始遍历数组,当这个值不在Set里面,那么就加入,然后j++。如果已经包含了这个值,那么不加入,并且,把Set删除 i 所在位置的值,然后i++。

其实就是要如果这个值不存在于Set中就加入,已经存在,那么我们叫减少Set的值。具体可以自己写一个字符串,然后一步步操作,就能明白了。

算法题目(JS)-3.Longest Substring Without Repeating Characters_第2张图片

你可能感兴趣的:(算法题目(JS)-3.Longest Substring Without Repeating Characters)