题目名称

给你一个字符串 s,请你返回 两个相同字符之间的最长子字符串的长度 ,计算长度时不含这两个字符。如果不存在这样的子字符串,返回 -1 。

子字符串 是字符串中的一个连续字符序列。

示例

输入:s = “aa”
输出:0
解释:最优的子字符串是两个 ‘a’ 之间的空子字符串。

题解

首先使用hash对象记录每一个字符出现的位置

然后对比没对字符的最开始出现位置及最后出现位置的差的大小

答案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
* @param {string} s
* @return {number}
*/
var maxLengthBetweenEqualCharacters = function(s) {
const length = s.length, strHash = {}
for(let i = 0; i < length;i++) {
if(!strHash[s[i]]) {
strHash[s[i]] = []
}
strHash[s[i]].push(i)
}
let max = 0
if(Object.values(strHash).every(item => item.length === 1)) return -1
Object.values(strHash).forEach(item => {
max = Math.max(item[item.length - 1] - item[0] - 1, max)
})
return max
};