leetcode-3-无重复字符的最长子串-javascript
题目
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
思路
由于ASCII字符最多只有128个,按题目的描述应该不会出现中文等其他字符,所以我们可以考虑申请一个长度为128的数组(名为letter),这个数组我们以字符的ASCII码为索引,我们先给数组中的所有值赋值0。然后开始扫描字符串,我们这里以示例一为例,首先扫描到a,取得a的ASCII码,然后letter[a.charCodeAt()] = 0 + 1,这里0是a在字符串里的位置,然后扫描第二个字符b,同样的letter[a.charCodeAt()] = 0 + 1,接下来c,然后当我们遇到再下一个a的时候letter[a.charCodeAt()]的值不为0,说明我们之前已经遇到过这个字符了,那么我们就可以截取(0, 2)位置的字符串存入maxArr中,然后再把当前新的a的位置存入,也就是 3 + 1,此时我们所认为的最长的数组就是 bca,这是正在扩展中的字符串,它还有无限的可能~~然后已经存入最大数组中的是abc,之后再接着扫描。。。
这个算法的思想就是动态的维护一个最长字符串,只要遇到和当前字符串中有相同字符的就截断当前字符串,然后从相同的字符的下一个开始继续维护
代码
/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function(s) {
const letter = new Array(128); // 记录最长子串的位
let max = 0;
const maxArr = [];
let begin = 0;
for(let i = 0; i < 128; i += 1) {
letter[i] = 0;
}
for (let i = 0; i < s.length ; i += 1) {
const pos = s[i].charCodeAt();
if (letter[pos] !== 0 && letter[pos] > begin) {
maxArr.push(max);
max = i + 1 - letter[pos];
begin = letter[pos];
letter[pos] = i + 1;
} else {
letter[pos] = i + 1;
max += 1;
}
}
maxArr.push(max);
for (let i = 0; i < maxArr.length; i += 1) {
if (max < maxArr[i]) {
max = maxArr[i];
}
}
return max;
};
leetcode-3-无重复字符的最长子串-javascript的更多相关文章
- Leetcode(三)无重复字符的最长子串
3. 无重复字符的最长子串 题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最 ...
- 【LeetCode】无重复字符的最长子串【滑动窗口法】
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc&quo ...
- [LeetCode] 3. 无重复字符的最长子串
题目链接:(https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/) 题目描述: 给定一个字符 ...
- 【leetcode 3. 无重复字符的最长子串】解题报告
思路:滑动窗口的思想 方法一:滑动窗口 int lengthOfLongestSubstring(string s) { /* 控制一个滑动窗口,窗口内的字符都是不重复的,通过set可以做到判断字符是 ...
- LeetCode 3: 无重复字符的最长子串 Longest Substring Without Repeating Characters
题目: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. Given a string, find the length of the longest substring withou ...
- Leetcode——3. 无重复字符的最长子串
难度: 中等 题目 Given a string, find the length of the longest substring without repeating characters. 给定一 ...
- 力扣Leetcode 3. 无重复字符的最长子串
无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串 ...
- [LeetCode]3. 无重复字符的最长子串(滑动窗口)
题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc ...
- [LeetCode]3.无重复字符的最长子串(Java)
原题地址: longest-substring-without-repeating-characters/submissions 题目描述: 示例 1: 输入: s = "pwwkew&qu ...
- LeetCode3.无重复字符的最长子串 JavaScript
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc&qu ...
随机推荐
- [HTML] 访问 a 链接不带 referer 的方式
html5 新属性 referrerpolicy: referrerpolicy no-referrer no-referrer-when-downgrade origin origin-when-c ...
- WPF 基于 .NET 5 框架和 .NET 6 的 SDK 进行完全单文件发布
本文来告诉大家如何基于 .NET 5 框架和 .NET 6 SDK 进行完全单文件发布,这是对 WPF 应用程序进行独立发布,生成的是完全单文件的方法 在之前的版本,尽管也是基于 .NET 5 框架的 ...
- 全网最详细SpringCloud-高级篇
SpringCloud-高级篇 高级篇包含微服务保护(流量控制,系统保护,熔断降级,服务授权).分布式事务.多级缓存.Redis集群.可靠消息服务 学习安排 技术分类 1.微服务保护 ①初识Senti ...
- 【git】建立分支
1.git clone现有的项目 git clone git@github.com:zhangshengdong/Zflask.git 2.建立关联 git remote add origin git ...
- Dash 2.17版本新特性介绍
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/dash-master 大家好我是费老师,不久前Dash发布了其2.17.0版本,执行下面的命令进行最 ...
- MacOS M1芯片openmp库出现mach-o file, but is an incompatible architecture (have ‘arm64‘, need ‘x86_64‘问题解决
目录 1. 问题描述 2. 问题出现原因 3. 解决方案 编译安装 使用Homebrew安装 Reference 1. 问题描述 报错如下所示: ImportError: dlopen(/Users/ ...
- Failed to download metadata for repo ‘PowerTools‘: Cannot prepare internal mirrorlist: No URLs in mi
Failed to download metadata for repo 'AppStream' [CentOS] - Techglimpsehttps://techglimpse.com/faile ...
- Linux部署Apache 网站服务器(httpd服务)
一.项目导入: 某学院组建了校园网,建设了学院网站.现需要架设Web服务器来为学院网站安家,同时在网站上传和更新时,需要用到文件上传和下载,因此还要架设FTP服务器,为学院内部和互联网用户提供WWW. ...
- C#/.NET/.NET Core优秀项目和框架2024年4月简报
前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍.功能特点.使用方式以及部分功能截图 ...
- Oracle中ALTER TABLE的五种用法(四、五)
首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1 ...