[Javascript - 力扣每日一题] 1624. 两个相同字符之间的最长子字符串

简介: [Javascript - 力扣每日一题] 1624. 两个相同字符之间的最长子字符串

题目描述:


给你一个字符串 s ,请你返回满足以下条件的最长子字符串的长度:每个元素出现两次或两次以上。如果不存在这样的子字符串,则返回 -1 。


示例 1:


输入:s = “aa”


输出:0


解释:最优的子字符串是两个 ‘a’ 之间的空子字符串。


示例 2:


输入:s = “abca”


输出:2


解释:最优的子字符串是 “bc” 。


示例 3:


输入:s = “cbzxy”


输出:-1


解释:s 中不存在出现出现两次的字符,所以返回 -1 。


实例4:


输入:s = “cabbac”


输出:4


解释:最优的子字符串是 “abba” ,其他的非最优解包括 “bb” 和 “” 。


解题思路:


  • 遍历字符串,对于每个字符都寻找其之后出现的相同字符。


  • 如果相同字符出现在当前位置之后,则计算当前字符与其之间的字符串长度,并更新最大值。


  • 如果相同字符没有出现在当前位置之后,则该字符无法参与构成满足要求的子字符串。


  • 遍历结束后,如果找到了满足要求的子字符串,返回其长度;否则返回 -1 。


代码实现:


/**
 * @param {string} s
 * @return {number}
 */
var maxLengthBetweenEqualCharacters = function(s) {
    let maxLen = -1
    for(let i =0;i<s.length;i++){
        const j = s.lastIndexOf(s[i])
        if(j>i) {
            maxLen = Math.max(maxLen,j-i-1)
        }
    }
    return maxLen
};


时间复杂度:O(n^2)。


空间复杂度:O(1)。


目录
相关文章
|
3月前
|
存储 算法
Leetcode第三题(无重复字符的最长子串)
这篇文章介绍了解决LeetCode第三题“无重复字符的最长子串”的算法,使用滑动窗口技术来找出给定字符串中最长的不含重复字符的子串,并提供了详细的代码实现和解释。
116 0
Leetcode第三题(无重复字符的最长子串)
|
3月前
|
JavaScript 前端开发
JS几种拼接字符串的方法
JS几种拼接字符串的方法
60 1
|
2月前
|
JavaScript 前端开发 数据处理
模板字符串和普通字符串在浏览器和 Node.js 中的性能表现是否一致?
综上所述,模板字符串和普通字符串在浏览器和 Node.js 中的性能表现既有相似之处,也有不同之处。在实际应用中,需要根据具体的场景和性能需求来选择使用哪种字符串处理方式,以达到最佳的性能和开发效率。
|
2月前
|
JavaScript 前端开发 索引
JavaScript学习第二章--字符串
本文介绍了JavaScript中的字符串处理,包括普通字符串和模板字符串的使用方法及常见字符串操作方法如`charAt`、`concat`、`endsWith`等,适合前端学习者参考。作者是一位热爱前端技术的大一学生,专注于分享实用的编程技巧。
34 2
|
3月前
|
JavaScript
力扣3333.找到初始输入字符串Ⅱ
【10月更文挑战第9天】力扣3333.找到初始输入字符串Ⅱ
40 1
|
3月前
|
C++
Leetcode第43题(字符串相乘)
本篇介绍了一种用C++实现的字符串表示的非负整数相乘的方法,通过逆向编号字符串,将乘法运算转化为二维数组的累加过程,最后处理进位并转换为字符串结果,解决了两个大数相乘的问题。
30 9
|
3月前
|
存储 JavaScript 前端开发
JavaScript 字符串(String) 对象
JavaScript 字符串(String) 对象
50 3
|
4月前
|
JavaScript 前端开发
javascript创建字符串
javascript创建字符串
|
4月前
|
JavaScript 前端开发
如何在JavaScript中替换字符串:一篇详细指南
如何在JavaScript中替换字符串:一篇详细指南
|
3月前
|
前端开发 JavaScript 安全
前端JS实现密码校验键盘横竖、26字母、相同字母、相同数字、密码包含用户名、数字 字母不能连续 不能相同三个、不能横向 竖向 连续三个 包含字符、不能有中文符号
该 JavaScript 代码实现了一个严格的密码校验功能,确保密码满足多种安全要求,包括长度、字符类型、不包含中文及特殊字符、不与用户名相似等。通过多个辅助函数,如 `validateFormat` 检查密码格式,`isHasChinaCharFun` 检测中文符号,`getCharAll` 生成键盘组合,以及 `checkPasswordFun` 综合验证密码的有效性和安全性。此工具对于提高用户账户的安全性非常有用。
92 0