Longest Substring Without Repeating Characters
Given a string, find the length of the longest substring without repeating characters.
Example:
1 | Given "abcabcbb", the answer is "abc", which the length is 3. |
题目大意
这题求一个字符串里面没有重复字母的最长子串
Solution1: 双重循环
1 | var lengthOfLongestSubstring = function (s) { |
先把字符串变成数组,然后从第一个元素开始,定义一个指针j,j依次向后搜索,找不到重复元素的时候,记录元素和元素个数,当找到重复元素时,清空记录元素(注意要留下当前元素)。
遍历数组完成后,再从第二个元素开始遍历。注意如果已经得到的最长子串大于剩余元素个数的时候,就跳出循环。
复杂度是 O(n^2) 可能会超时,所以强烈不推荐。
Solution2 超强大神版
1 | ; |
在leetcode的答案中找到了一个大神写的c++算法,简直不能再D,因此改成JavaScript版。
解析:首先定义一个字典存放每个元素以及元素的位置,当有重复的元素出现时,更改元素位置,并且比较当前元素位置与上次出现位置的距离。
刚刚入门算法,大神莫喷,欢迎指正。