Sherlock and the Valid String

  • + 0 comments

    Java 8 Solution

    Used HashMap to solve it.

    public static String isValid(String s) {
        // Write your code here
        int freq=0,count=0;
        Map<Character,Integer> frqMap = new HashMap<Character,Integer>();
        Map<Integer,Integer> higMap=new HashMap<>();
        for(char c: s.toCharArray()){
            frqMap.put(c, frqMap.getOrDefault(c, 0)+1);
        }
        
        for(int i:frqMap.values()){
            higMap.put(i, higMap.getOrDefault(i, 0)+1);
        }
        
        for(int i:higMap.keySet()){
            if(freq<higMap.get(i))
                freq=i;
        }
        
        
        for(int i: frqMap.values()){
            if(i!=freq){
                if(i==1)
                    count++;
                else if(i<freq)
                    count+=freq-i;
                else
                    count+=i-freq;
            }
        }    
        
        if(count>1)
            return "NO";
        else
            return "YES";
    
        }