3090. 每个字符最多出现两次的最长子字符串
给你一个字符串 s ,请找出满足每个字符最多出现两次的最长子字符串,并返回该子字符串的 最大 长度。示例 1:
输入: s = "bcbbbcba"
输出: 4
解释:
以下子字符串长度为 4,并且每个字符最多出现两次:"bcbbbcba"。
示例 2:
输入: s = "aaaa"
输出: 2
解释:
以下子字符串长度为 2,并且每个字符最多出现两次:"aaaa"。
提示:
<ul>21) { dis.put(sc, dis.get(sc) - 1); } else { dis.remove(sc); } left++; } maxLen = Math.max(maxLen, right - left + 1); } return maxLen; }}优化hash表为数组,减少时间空间复杂度,但逻辑相同
class Solution {
public int maximumLengthSubstring(String s) {
int maxLen = 0, left = 0;
char[] sc = s.toCharArray();
Map<Character, Integer> dis = new HashMap<>();
for (int right = 0; right < sc.length; right++) {
if (dis.containsKey(sc)) {
dis.put(sc, dis.get(sc) + 1);
} else {
dis.put(sc, 1);
}
while (dis.get(sc) > 2) {
if (dis.get(sc) > 1) {
dis.put(sc, dis.get(sc) - 1);
} else {
dis.remove(sc);
}
left++;
}
maxLen = Math.max(maxLen, right - left + 1);
}
return maxLen;
}
}
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]