Find duplicate characters in a String and count the number of occurances using Java

前端 未结 30 2464
遇见更好的自我
遇见更好的自我 2020-12-14 11:47

How can I find the number of occurrences of a character in a string?

For example: The quick brown fox jumped over the lazy dog.

Some example

相关标签:
30条回答
  • 2020-12-14 12:26

    Using Eclipse Collections CharAdapter and CharBag:

    CharBag bag = 
        Strings.asChars("The quick brown fox jumped over the lazy dog.").toBag();
    
    Assert.assertEquals(1, bag.occurrencesOf('a'));
    Assert.assertEquals(4, bag.occurrencesOf('o'));
    Assert.assertEquals(8, bag.occurrencesOf(' '));
    Assert.assertEquals(1, bag.occurrencesOf('.'));
    

    Note: I am a committer for Eclipse Collections

    0 讨论(0)
  • 2020-12-14 12:26

    In java... using for loop:

    import java.util.Scanner;
    
    /**
     *
     * @author MD SADDAM HUSSAIN */
    public class Learn {
    
        public static void main(String args[]) {
    
            Scanner sc = new Scanner(System.in);
            String input = sc.next();
            char process[] = input.toCharArray();
            boolean status = false;
            int index = 0;
            for (int i = 0; i < process.length; i++) {
                for (int j = 0; j < process.length; j++) {
    
                    if (i == j) {
                        continue;
                    } else {
                        if (process[i] == process[j]) {
                            status = true;
                            index = i;
                            break;
                        } else {
                            status = false;
    
                        }
                    }
    
                }
                if (status) {
                    System.out.print("" + process[index]);
    
                }
            }
        }
    }
    
    0 讨论(0)
  • 2020-12-14 12:29
     void Findrepeter(){
        String s="mmababctamantlslmag";
        int distinct = 0 ;
    
        for (int i = 0; i < s.length(); i++) {
    
            for (int j = 0; j < s.length(); j++) {
    
                if(s.charAt(i)==s.charAt(j))
                {
                    distinct++;
    
                }
            }   
            System.out.println(s.charAt(i)+"--"+distinct);
            String d=String.valueOf(s.charAt(i)).trim();
            s=s.replaceAll(d,"");
            distinct = 0;
    
        }
    
    }
    
    0 讨论(0)
  • 2020-12-14 12:29
    public class DuplicateValue {
    
        public static void main(String[] args) {
    
            String s = "hezzz";
    
            char []st=s.toCharArray();
    
            int count=0;
    
            Set<Character> ch=new HashSet<>();
            for(Character cg:st){
                if(ch.add(cg)==false){
                    int occurrences = Collections.frequency(ch, cg);
                    count+=occurrences;
                    if(count>1){
                    System.out.println(cg + ": This character exist more than one time");
                    }
                    else{
                    System.out.println(cg);
                    }
                }
            }
    
            System.out.println(count);
        }
    }
    
    0 讨论(0)
  • 2020-12-14 12:30

    This is the implementation without using any Collection and with complexity order of n. Although the accepted solution is good enough and does not use Collection as well but it seems, it is not taking care of special characters.

    import java.util.Arrays;
    
    public class DuplicateCharactersInString {
        public static void main(String[] args) {
            String string = "check duplicate charcters in string";
            string = string.toLowerCase();
            char[] charAr = string.toCharArray();
            Arrays.sort(charAr);
            for (int i = 1; i < charAr.length;) {
                int count = recursiveMethod(charAr, i, 1);
                if (count > 1) {
                    System.out.println("'" + charAr[i] + "' comes " + count + " times");
                    i = i + count;
                } else
                    i++;
            }
        }
    
        public static int recursiveMethod(char[] charAr, int i, int count) {
            if (ifEquals(charAr[i - 1], charAr[i])) {
                count = count + recursiveMethod(charAr, ++i, count);
            }
            return count;
        }
    
        public static boolean ifEquals(char a, char b) {
            return a == b;
        }
    }
    

    Output :

    ' ' comes 4 times
    'a' comes 2 times
    'c' comes 5 times
    'e' comes 3 times
    'h' comes 2 times
    'i' comes 3 times
    'n' comes 2 times
    'r' comes 3 times
    's' comes 2 times
    't' comes 3 times
    
    0 讨论(0)
  • 2020-12-14 12:31

    Finding the duplicates in a String:

    Example 1 : Using HashMap

    public class a36 {
        public static void main(String[] args) {
            String a = "Gini Rani";
            fix(a);
        }//main
        public static void fix(String a ){
            Map<Character ,Integer> map = new HashMap<>();
            for (int i = 0; i <a.length() ; i++ ) {
            char ch = a.charAt(i);
                    map.put(ch , map.getOrDefault(ch,0) +1 );
            }//for
    
           List<Character> list = new ArrayList<>();
           Set<Map.Entry<Character ,Integer> > entrySet = map.entrySet();
    
           for (  Map.Entry<Character ,Integer> entry : entrySet) {
                 list.add( entry.getKey()  ); 
    
                 System.out.printf(  " %s : %d %n" ,  entry.getKey(), entry.getValue()           );
           }//for
           System.out.println("Duplicate elements => " + list);
    
        }//fix
    }
    

    Example 2 : using Arrays.stream() in Java 8

    public class a37 {
        public static void main(String[] args) {
            String aa = "Protijayi Gini";
            String[] stringarray = aa.split("");
    
        Map<String , Long> map =  Arrays.stream(stringarray)
            .collect(Collectors.groupingBy(c -> c , Collectors.counting()));
            map.forEach( (k, v) -> System.out.println(k + " : "+ v)        );
        }
    }
    
    0 讨论(0)
提交回复
热议问题