Preview:
import java.util.*;
import java.io.*;

public class Main {

  public static int lengthOfLongestSubstringTwoDistinct(String s) {
    HashMap<Character,Integer> map = new HashMap<>();
    
    int distinct= 0;
    int start =0;
    int ans = 0;
    
    for(int i = 0 ; i < s.length();i++){
        char ch = s.charAt(i);
        
        if(map.containsKey(ch)==false)
        distinct++;
        
        map.put(ch , map.getOrDefault(ch,0)+1);
        
        while(distinct>2){
            
            char temp = s.charAt(start);
            
            if(map.get(temp)==1){
                map.remove(temp);
                distinct--;
            }    
            
            else{
                map.put(temp , map.get(temp)-1);
            }
            
            start++;
        }
        
        ans = Math.max(ans , i - start+1);
        
        
    }
    return ans;
  }

  public static void main(String[] args) throws java.lang.Exception {

    Scanner scn = new Scanner(System.in);

    int ans = lengthOfLongestSubstringTwoDistinct(scn.nextLine());
    System.out.println(ans);
  }
}
downloadDownload PNG downloadDownload JPEG downloadDownload SVG

Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!

Click to optimize width for Twitter