两个相同字符之间的最长子字符长度
两个字符串之间的最长子字符长度
一、题目描述
给定一个字符串s,返回两个相同字符之间的最长子字符串的长度,如果不存在则返回-1;
示例:
输入:s = "aa"
输出:0
解释:最优的子字符串是两个 'a' 之间的空子字符串。
输入:s = "abca"
输出:2
解释:最优的子字符串是 "bc" 。
输入:s = "cbzxy"
输出:-1
解释:s 中不存在出现出现两次的字符,所以返回 -1 。
二、题目分析
这里需要找到最长的字符串长度,首先需要考虑的特殊情况。没有字串时,和只有字串时。有多个字串时。每一次的字串长度需要记录,最后找到最长字串即可。
三、解题思路
直接遍历,字母有26个,创建一个长度为26字符数组firstIndex,并初始化为-1。这里firstIndex存放的是字符在s字符串的索引。如果不为-1.则说明此字母出现过一次,只需将两个字符相减,并记录长度。为-1时,说明第一次遇见字符。存索引进firstIndex中。
代码实现:
class Solution {
public int maxLengthBetweenEqualCharacters(String s) {
int[] firstIndex = new int[26];
Arrays.fill(firstIndex,-1);
int Maxlong = -1;
for(int i=0; i<s.length();i++){
if(firstIndex[s.charAt(i) - 'a'] <0){
firstIndex[s.charAt(i) - 'a'] = i;
}else{
Maxlong = Math.max(Maxlong, i-firstIndex[s.charAt(i) - 'a']-1);
}
}
return Maxlong;
}
}
浙公网安备 33010602011771号