1624. Largest Substring Between Two Equal Characters #
Problem #
Given a string s, return the length of the longest substring between two equal characters, excluding the two characters. If there is no such substring return -1.
A substring is a contiguous sequence of characters within a string.
Example 1:
Input: s = "aa"
Output: 0
Explanation: The optimal substring here is an empty substring between the two 'a's.
Example 2:
Input: s = "abca"
Output: 2
Explanation: The optimal substring here is "bc".
Example 3:
Input: s = "cbzxy"
Output: -1
Explanation: There are no characters that appear twice in s.
Example 4:
Input: s = "cabbac"
Output: 4
Explanation: The optimal substring here is "abba". Other non-optimal substrings include "bb" and "".
Constraints:
1 <= s.length <= 300scontains only lowercase English letters.
Problem Summary #
Given a string s, return the length of the longest substring between two equal characters, excluding the two characters when calculating the length. If no such substring exists, return -1. A substring is a contiguous sequence of characters within a string.
Solution Approach #
- Easy problem. Take each character and scan the string once. If the same character can still be found in the string, return the last such character and calculate the distance between these two characters. Taking the last character is to make the distance between the two equal characters as long as possible. Dynamically maintain the maximum length while scanning the string. If there are no two equal characters in the string, return -1.
Code #
package leetcode
import "strings"
func maxLengthBetweenEqualCharacters(s string) int {
res := -1
for k, v := range s {
tmp := strings.LastIndex(s, string(v))
if tmp > 0 {
if res < tmp-k-1 {
res = tmp - k - 1
}
}
}
return res
}