Longest SubString without repeating characters-----javascript写法,
分享于 点击 20037 次 点评:176
Longest SubString without repeating characters-----javascript写法,
var lengthOfLongestSubstring = function(s) {
var max = 0 , start = 0 ;
for (let end = 1; end <= s.length; end++ ){
var sub = s.substring(start , end );
var isub =sub.indexOf(sub[sub.length - 1])!== sub.length - 1 ;
if (isub) {
start += (sub.indexOf(sub[sub.length - 1]) + 1);
}
max = Math.max(end - start , max);
}
return max ;
};
这是代码部分,接下来谈谈思路:
这道题是找一个没有重复字符的最长子序列,这道题怎么也逃不开遍历,因为要找出最长子序列,肯定要比较,但是时间复杂度不一样,这个是O(n),一般能做到多项式时间复杂度就不错了。
这道题用了两个js中的函数,substring (start,stop)和indexOf (string,position),第一个方法是从某一字符串中找出[start,stop)这一区间的字符串,第二个方法是在字符串中搜索string 指定字符串的位置,第二个参数是从字符串的某一位置开始匹配搜索,也可以省略即从开始位置匹配。
接下来讲下解题思路,要找一个满足要求的最长子序列,返回长度。首先可定从字符串第一个字符开始,定义了一个sub的字符数组,遍历目标字符串的每一个字符,如果在sub中没有找到相同的字符,把该字符加到sub中如果找到相同的字符那么,start就从sub中相同字符的下一个字符开始遍历,并不断与之前的sub字符相比,如果长就赋值max。最后遍历到end==s.length;返回最长子序列的长度。
相关文章
- 暂无相关文章
用户点评