例如:

输入一个字符串:avbghvhv

先找两个相同字符串就是 1位置的v 和 最后一个v

那么它两之间最长子字符串长度就是 avbghvhv :5

代码实现: 

        const str = 'avbghvhv';const longestSub = (str = '') => {const map = new Map();let max = -1;for(let i = 0; i < str.length; i++){if(map.has(str.charAt(i))){ //如果map里面包含了当前字符再计算最大值,否则,直到访问到第二个v的时候,i=5max = Math.max(max, i - map.get(str.charAt(i)) - 1);//max=Math.max(-1,5-map.get('v')-1)=Math.max(-1,5-1-1)=3}else{map.set(str.charAt(i), i);//不包含就将字母写入map,map里面相当于存放的是去重的字符};};console.log(map,'oooo')return max;};console.log(longestSub(str));

JavaScript charAt() 方法:

var str = "HELLO WORLD";
var n = str.charAt(2);// 输出 L

 JavaScript中的Map方法:

Map 对象存有键值对,其中的键可以是任何数据类型。

Map 对象记得键的原始插入顺序。

Map 对象具有表示映射大小的属性。

Map.has()

如果 Map 中存在键,则 Map.has() 返回 true:

Map.clear()

Map.clear() 从 Map 中移除所有元素:

map.clear();

Map.delete()

Map.delete() 删除 Map 元素:

Map.size

Map.size 返回 Map 中元素的数量:

map.size;

js实现查找两个相同字符串之间的最长子字符串长度相关推荐

  1. LeetCode简单题之两个相同字符之间的最长子字符串

    题目 给你一个字符串 s,请你返回 两个相同字符之间的最长子字符串的长度 ,计算长度时不含这两个字符.如果不存在这样的子字符串,返回 -1 . 子字符串 是字符串中的一个连续字符序列. 示例 1: 输 ...

  2. LeetCode 1624. 两个相同字符之间的最长子字符串

    文章目录 1. 题目 2. 解题 1. 题目 给你一个字符串 s,请你返回 两个相同字符之间的最长子字符串的长度 ,计算长度时不含这两个字符.如果不存在这样的子字符串,返回 -1 . 子字符串 是字符 ...

  3. 【LeetCode刷题】1624. 两个相同字符之间的最长子字符串

    给你一个字符串 s,请你返回 两个相同字符之间的最长子字符串的长度 ,计算长度时不含这两个字符.如果不存在这样的子字符串,返回 -1 . 子字符串 是字符串中的一个连续字符序列. 示例 1: 输入:s ...

  4. mysql查询两张表的同一列_如何快速查找两个数据表之间的相同和不同?

    原标题:如何快速查找两个数据表之间的相同和不同? 知识 随笔 案例 声音 其他 编者按 工作中经常会遇到对来源不同的数据进行比对,查找相同.不同.差异性等.过于复杂的需求,我们通常会转换思路,使用数据 ...

  5. js 实现查找两个数组中的不同项——基础积累

    今天遇到一个需求,就是select的多选下拉,根据选中的值再进行相应的处理.比如当前选中了['山东','浙江','深圳']三项内容,现在去掉中间的深圳,我需要拿到去掉的是哪一项. 我想的方式就是: w ...

  6. oracle字符串之间,oracle中判断字符串之间包含关系

    今天遇到个问题.判断表中某一字段的值是否包含在一传入的变量中,或者某一字段值是不是包含指定的字符串,如果字段的值包含在变量中则返回结果. 测试如下: 程序会产生一个变量,判断字段"A&quo ...

  7. vue/js数组转字符串之间的相互转换

    vue/js数组和字符串之间的相互转换 // 数组转字符串 let arr = [1,2,3] arr.join(',') //变成字符串,并以逗号分隔 // 字符串转数组 let str = '1, ...

  8. neo4j 两个点创建关系_Neo4j:找到两个纬度/经度之间的中间点

    neo4j 两个点创建关系 昨天我写了一篇博客文章,展示了如何使用Cypher查找两个纬度/经度之间的中点,这是第一次尝试填补缺失位置时的效果,但是我意识到我可以做得更好. 正如我在上一篇文章中提到的 ...

  9. Neo4j:找到两个纬度/经度之间的中间点

    昨天我写了一篇博客文章,展示了如何使用Cypher查找两个纬度/经度之间的中点,这是第一次尝试填补丢失位置的方法,但我意识到我可以做得更好. 正如我在上一篇文章中提到的,当我找到一个缺少经纬度坐标的停 ...

最新文章

  1. 突然发现缓存这么好用
  2. 免费获取半年 Bitdefender Total Security 2014
  3. 《iOS 应用逆向工程:分析与实战》 pdf 电子书分享
  4. jq动态渲染后获取不到元素高度_浏览器的渲染机制
  5. hnust 神奇的序列
  6. c++向量和数组的区别_Matlab入门基础知识(5)对数组的操作
  7. luogu P3810 【模板】三维偏序(陌上花开)
  8. 删除Linux上的用户
  9. Centos7 tomcat优化
  10. 怎么在中国杀死SAP
  11. lnmp一键安装包 php7,LNMP一键安装包 V1.7 正式版发布
  12. PeakDo毫米波无线投屏器
  13. 【材料课堂】锂电池基础
  14. CSS盒子模型box-sizing属性详解
  15. c语言 用斜率打印直线,圆锥曲线的解题技巧和方法2017完美打印版.doc
  16. 加州大学戴维斯分校 计算机科学,UCDavis的Computer Science「加州大学戴维斯分校计算机科学专业」...
  17. MySQL - Failed to open the referenced table XXX
  18. 在Android面试前背八股和学面试技巧真的有用吗?
  19. 【Typora Emoji 图标】
  20. 前端实现文件上传的断点续传

热门文章

  1. 第一次实验报告学习总结
  2. Centos8怎么进行复位清屏? Centos8终端复位清屏的技巧
  3. 使用Git工具上传项目代码到Gitee仓库
  4. 遗传算法解决TSP(34个省会城市)问题
  5. java基于springboot+vue的驾校报名预约管理系统 nodejs
  6. 一个For语句导致死循环的例子
  7. htonl(), ntohl(), htons(), ntohs() 函数具体应用
  8. 英孚教育APP应用获全球杰出商业银奖
  9. Linux C语言 创建一个简单的守护进程
  10. Idea 2022 创建 Artifacts 运行 Tomcat 步骤