请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。-笔试面试资料

这是qklbishe.com第14469 篇笔试面试资料
提供答案分析,通过本文《请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。

JavaScript

请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 区块链毕设学生772883394号

哈希表+双指针滑动窗口。时间复杂度o(n),只遍历一次;空间复杂度o(1),虽然用了哈希表,但是字符ASCII码0~127,也就是说哈希表最多存128个数据,这是个常数级别,可认为是o(1)。
function lengthOfLongestSubstring( s ) {     // write code here     //1. 用一个map存储子字符串信息,key-字符,value-下标。     //2. 滑动窗口,双指针,begin,end。再用一个变量maxLength记录最大长度。     //3. end变量字符串,如果map中有重复字符,maxLength = max(maxLength,     // end-begin),更新begin = max(begin, value+1)。     //4. 更新map信息。     //5. 最后再更新一次maxLength。     const map = new Map();     let begin = 0;     let end = 0;     let maxLength = 0;     while (end < s.length) {         const char = s.charAt(end);         if (map.has(char)) {             maxLength = Math.max(maxLength, end - begin);             begin = Math.max(begin, map.get(char) + 1);         }         map.set(char, end);         end++;     }     maxLength = Math.max(maxLength, end - begin);     return maxLength; }

今天 11:51:56 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。-笔试面试资料

提供最优质的资源集合

立即查看 了解详情