classSolution { public: intlengthOfLongestSubstringTwoDistinct(string s){ int num_distinct = 0, left = 0, right = 0, res = 0, n = s.size(); int count[52]{}; while (right < n) { int idx = getIndex(s[right]); if (count[idx] == 0) { num_distinct++; } count[idx]++; while (num_distinct > 2) { int l_idx = getIndex(s[left]); count[l_idx]--; if (count[l_idx] == 0) { num_distinct--; } left++; } res = max(res, right - left + 1); right++; } return res; }
intgetIndex(char& c){ if (isupper(c)) { return c - 'A' + 26; } else { return c - 'a'; } } };