问题描述:
- 给你一个字符串
s
,请你返回两个相同字符之间的最长子字符串的长度,计算长度时不含这两个字符。如果不存在这样的子字符串,返回-1
。 - 子字符串是字符串中的一个连续字符序列。
核心思路:
- 其实就是找字符第一次出现的位置和最后一次出现的位置。
- 用一个数组来记录字符所在位置即可。
代码实现:
class Solution
{
public:
int maxLengthBetweenEqualCharacters(string s)
{
vector<int> help(26, -1);
int ans = -1;
for(int i = 0; i < s.size(); ++i)
{
char c = s[i];
c -= 'a';
if(help[c] == -1)
help[c] = i;
else ans = max(ans, i-help[c]-1);
}
return ans;
}
};