例如:
输入一个字符串: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=5
max = 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 Map数据结构来查找给定字符串中最长重复字符间的子串的方法,并提供了详细的代码实现步骤。
最低0.47元/天 解锁文章
747

被折叠的 条评论
为什么被折叠?



