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 <= 300
s contains only lowercase English letters.
遍历字符串,记下最大的长度即可。
class LargestSubstringBetweenTwoEqualCharacters : public Solution {
public:
void Exec() {
}
int maxLengthBetweenEqualCharacters(string s) {
int indexes[26][2], maxLen = -1;
for (int i = 0; i < 26; i++) {
indexes[i][0] = -1;
indexes[i][1] = -1;
}
for (int i = 0; i < s.size(); i++) {
if (indexes[s[i] - 'a'][0] < 0) {
indexes[s[i] - 'a'][0] = i;
} else if (i > indexes[s[i] - 'a'][1]) {
indexes[s[i] - 'a'][1] = i;
if (indexes[s[i] - 'a'][1] - indexes[s[i] - 'a'][0] - 1 > maxLen) {
maxLen = indexes[s[i] - 'a'][1] - indexes[s[i] - 'a'][0] - 1;
}
}
}
return maxLen;
}
};