至少包含两个字符的最长字串

至少包含两个字符的最长字串

寻找字符串的最长子串,该子串最多只能存在两个不同的字符

示例 Input :s= “aabbccc”

Output: “bbccc”;

滑动窗口+哈希表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class Main {
public static String findLongestSubstring(String s) {
if (s == null || s.length() == 0) {
return "";
}

int left = 0, right = 0;
int maxLength = 0;
int start = 0;
Map<Character, Integer> charFrequency = new HashMap<>();

while (right < s.length()) {
char rightChar = s.charAt(right);
charFrequency.put(rightChar, charFrequency.getOrDefault(rightChar, 0) + 1);
right++;

while (charFrequency.size() > 2) {
char leftChar = s.charAt(left);
charFrequency.put(leftChar, charFrequency.get(leftChar) - 1);
if (charFrequency.get(leftChar) == 0) {
charFrequency.remove(leftChar);
}
left++;
}
if (right - left > maxLength) {
maxLength = right - left;
start = left;
}
}

return s.substring(start, start + maxLength);
}

public static void main(String[] args) {
String s = "aabbccc";
System.out.println(findLongestSubstring(s)); // Output: "bbccc"
}
}

至少包含两个字符的最长字串
http://example.com/2023/08/21/算法/滑动窗口,双指针/11. 字符串的最长字串/
作者
PALE13
发布于
2023年8月21日
许可协议