LeetCode第三题

echosoar 原创发表于 2015/09/15 13:58:43
算法,leetcode

Longest Substring Without Repeating Characters

没有重复字符的最大子字符串 ``` Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3. For "bbbbb" the longest substring is "b", with the length of 1. ```
题目的基本意思就是给你一个字符串,从这个字符串中寻找没有重复字符的最大子串的长度。 例如“abcabcbb”中没有重复字符的最大子串就是abc或者bca或者cab,它们的长度为3。 “bbbbb”中没有重复字符的最大子串就是b,长度为1。
首先分析一下这个题目,首先如果这个字符串的长度就是1的话,那么最长的肯定就是它自己。然后如果字符串长度大于一,首先要设置一个变量来存储当前最长的子串,然后就得使用一个循环,从1开始,一直循环到字符串结尾,把里面的无重复字符串长度和已有的最长长度进行对比,找到之间最长的无重复字符子串。
``` var lengthOfLongestSubstring = function(s) {
if (s.length <= 1) return s.length;
var max = 1,ptr = 0;
for (var i = 1; i< s.length; i++) {
var index = s.indexOf(s.charAt(i), ptr); 
if (index < i) {
ptr = index + 1;
}
max = Math.max(max, i - ptr + 1);
}
return max;
}; ```