在字符串中删除与某字符相同的字符。_leetcode之两个相同字符之间的最长子字符串...

本文主要记录一下leetcode之两个相同字符之间的最长子字符串

dec51788148448f86a6c44ef2881fe2f.png

题目

给你一个字符串 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 <= s.length <= 300s 只含小写英文字母来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/largest-substring-between-two-equal-characters著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解

class Solution {    public int maxLengthBetweenEqualCharacters(String s) {        Map map = new HashMap<>();        int result = -1;        for (int i = 0; i 

小结

这里用HashMap记录一下每个字符的下标,在遍历字符串的时候,遇到相同的字符的时候,计算前后下标的差来得出子字符串的长度,然后通过对比记录最长的子字符串的长度。

doc

  • 两个相同字符之间的最长子字符串
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值