无重复的最长子串
1:题目:输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
//穷举出所有的字符串(i,j两次循环)[I,j]就可以表示所有子串的情况
思路:判断是否唯一,跳出循环
//掏出循环思考了好久,abcbe 为何b包含在abc中直接跳出因为be其实在b这个位置的索引已经不能使用因为他不是唯一的,而且be其实[4,5]已经在后面穷举了所以,直接跳出循环判断。
/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function (s) { if (s == "") { return 0; //简单判断空字符串退出 } var str = "", len = 1; //str存放字符串,len用来记录长度 // [i,j]表示字符串开头到结尾的字符 j-i+1表示长度 for (var i = 0; i < s.length; i++) { str = s[i]; //开头的起始位置 for (var j = i + 1; j < s.length; j++) { if (s[i] == s[j] || str.indexOf(s[j]) != -1) { //s[i] == s[j] || str.indexOf(s[j]) != -1 //判断后面加入的字符串是否在前面的数组中,如果是则后面都不用判断直接跳出 // abcb abcbad abcb直接跳出不用判断 abcdad原因,包含前面的都不需要判断因为有重复 a,ab,abc,abcb,abcbd 都是一样的 break; } str += s[j]; if (j - i + 1 > len) { len = j - i + 1; } } } return len; };