
给定一个字符串,找出不含有重复字符的最长子串的长度。
示例:
给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。
给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。
给定 "pwwkew" ,最长子串是 "wke" ,长度是3。
开始想法
碰到这个题第一反应,来个去重吧,明显的去重意思呀 ~ 结果越写觉得越不对劲,啥东西 ~好像跟去重没多大关系,

好吧,开始自己想思路吧 ~
思路
比对是否有重复的元素,第一个放到一个字符串里,第二个与第一个比较,第三个与前两个比较.... 遇到重复值即停止 ,啊 哈哈哈哈~想到了 ,我真是把自己蠢死了,当我看到第三个示例的时候,好像我的思路不太对啊,万一重复之后,后面的字符串又有更长的怎么办 ???
沉思
那就要判断两种了,一旦碰到重复的值,就要清空重新计算了,接下来思路大概有了,开始动手啦 ~首先科普两个知识(大佬就略过就可以)
数组的length是属性,如
char c[]=new char[5];
int a=c.length
字符串的length是方法:
String s="abcd";
int a=s.lenth();
来喽,来喽,它真的来喽 ~
function lengthOfLongestSubstring(str) {
var newStr = ''; //存放字符串
var len = 0; //放最大长度
for( var i=0; i<str.length; i++){
// 'abc'.indexOf('a');
let index = newStr.indexOf(str[i]);
if(index === -1) {
newStr += str[i];
//比对长度
len = len < newStr.length? newStr.length:len;
}else {
// 重新拼接字符串
newStr = str[i];
}
}
return len;
};
console.log(lengthOfLongestSubstring('abcabcbb'));
console.log(lengthOfLongestSubstring('bbbbb'));
console.log(lengthOfLongestSubstring('pwwkew'));
可惜本仙女没有答上,难过,本仙女继续努力啦 ,下期见!
