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;
    }
};
共 0 条回复
暂时没有人回复哦,赶紧抢沙发
发表新回复

作者

sryan
today is a good day