SeeSee
SeeSee

Reputation: 57

how to count and print out only duplicates?

I know how to go through whole array, but I only need number of duplicate occurrences. I'm at beginners level, so just basic use of loops and arrays.

int[] array = {12, 23, -22, 0, 43, 545, -4, -55, 43, 12, 0, -999, -87};

for (int i = 0; i < array.length; i++) {
    int count = 0;
    for (int j = 0; j < array.length; j++) {
        count++;   
    }
    System.out.println(array[i] + "\toccurs\t" + count + "X");
}

Upvotes: 2

Views: 1320

Answers (3)

NIlesh Pingale
NIlesh Pingale

Reputation: 1

For String I print all the duplicates and their counts. Please check above code and my logic.

package Interview_Strings;

import java.util.Arrays;

public class print_duplicates_and_their_counts 
{
    static void printDupCount(String str)
    {
        char[] charString=str.toCharArray();
        Arrays.sort(charString);
        int size=charString.length;
        int j=1,i=0;
        int count=0;
        while(i<size && j<size)
        {
            if(charString[i]!=charString[j])
            {
                count=j-i;
                System.out.println(charString[i]+" : "+count);
                i=j;
                j++;
                if(j>=size)
                {
                    System.out.println(charString[j-1]+" : "+count);

                }
                
                
            }
            else
            {
                j++;
            }
            
        }
    }
    public static void main(String args[])
    {
        String str="bigbangtheory";
        printDupCount(str);
    }

}

output: a : 1 b : 2 e : 1 g : 2 h : 1 i : 1 n : 1 o : 1 r : 1

Upvotes: 0

Sekar Nagaraj
Sekar Nagaraj

Reputation: 1

using System;

public class Exercise34
{
    public static void Main()
    {
        int[] a = { 3,4,5,6,7,8,3,4,5,6,7,8,9,9};
        int n = a.Length-1;
        int dupcounter = 0;
        for (int i = 0; i < n; i++)
        {
            int counter = 0;
            for (int j = i + 1; j <= n; j++)
            {
                if (a[i] == a[j])
                {
                    counter++;
                    n--;
                    if (counter == 1)
                    {
                        dupcounter++;
                        Console.WriteLine(a[i]);                        
                    }
                    for (int k = j; k <= n; k++)
                    {
                        a[k] = a[k + 1];
                    }
                }
            }
        }
        Console.WriteLine(dupcounter);
    }
}

Upvotes: 0

castletheperson
castletheperson

Reputation: 33466

You can do better if you use more than just loops and arrays, but a simple algorithm would be to use two nested for loops, and put an if statement inside that increments a counter when a duplicate is found.

int[] array = {12, 23, -22, 0, 43, 545, -4, -55, 43, 12, 0, -999, -87};

for (int i = 0; i < array.length - 1; i++) {
    int count = 1;
    for (int j = i + 1; j < array.length; j++) {
        if (array[i] == array[j]) {
            count++;
        }
    }
    if (count > 1) {
        System.out.println(array[i] + "\toccurs\t" + count + " times");
    }
}

Upvotes: 2

Related Questions