作者:手浪用户2602931657 | 来源:互联网 | 2023-05-27 19:33
Givenastring,findthelengthofthelongestsubstringTthatcontainsatmost2distinctcharacte
Given a string, find the length of the longest substring T that contains at most 2 distinct characters.
For example, Given s = “eceba”
,
T is "ece" which its length is 3.
Similar: 3. Longest Substring Without Repeating Characters (Almost same !)
340. Longest Substring with At Most K Distinct Characters
239. Sliding Window Maximum
1 public class Solution {
2 public int lengthOfLongestSubstringTwoDistinct(String s) {
3 int[] array = new int[2];
4 array[0] = -1;
5 array[1] = -1;
6 int max = 0;
7 int start = 0;
8
9 for (int i = 0; i ) {
10 max = max > (i-start) ? max : (i-start); // i is not included
11 char c = s.charAt(i);
12 if (array[0] == -1) {
13 array[0] = c;
14 } else if (array[0] != c && array[1] == -1) { // in case array[1] = array[0]
15 array[1] = c;
16 } else if (array[0] != c && array[1] != c) {
17 char pre = s.charAt(i-1);
18 int j = i-2;
19 while (j >= start && s.charAt(j) == pre) {
20 j--;
21 }
22 j++;
23 start = j;
24 array[0] = pre;
25 array[1] = c;
26 }
27 }
28
29 max = max > (s.length() - start) ? max : (s.length() - start);
30 return max;
31 }
32 }