Duplicate occurrences of characters in String without Collections

I have searched multiple websites to find the answer how to identify the duplicate characters in a given string "AMBERROADSOFTWARE" without using Collections API. But, still no luck. So, finally me and my team member Ramanjulu has found the way to solve this problem. This is also one of the question which is asking multiple companies interviews.

package com.javatbrains.practice;

public class FindDuplicatesFromString {
 public static void main(String[] args) {
  findUniqueChars();
  findDuplicateChar();
  findDuplicateWords();
 }

 private static void findUniqueChars() {
  String str = "NALLAMACHU";
  int count = 0;
  String finalString = "";

  if (str != null) {
   for (int i = 0; i < str.length(); i++) {
    char initialChar = str.charAt(i);
    int length = str.length();
    str = str.replaceAll(str.charAt(i) + "", "");
    count = length - str.length();
    if (count == 1)
     finalString = finalString + initialChar + "";
    i--;
   }
   System.out.println("Unique Character in String is: " + finalString);
  }
 }

 public static void findDuplicateChar() {
  String str = "NALLAMACHU";
  int count = 0;
  if (str != null) {
   System.out.println();
   System.out.println("Each Character repeated in given String is: ");
   for (int i = 0; i < str.length(); i++) {
    char initialChar = str.charAt(i);
    int length = str.length();
    str = str.replaceAll(str.charAt(i) + "", "");
    count = length - str.length();
    System.out.println(initialChar + " repeated at " + count);
    i--;
   }
  }
 }

 public static void findDuplicateWords() {
  String str = "Subbareddy Nallamachu Nallamachu Subbareddy Java";
  int count = 0;

  if (str != null) {
   System.out.println();
   System.out.println("Repeated words in given String is: ");
   str = str.toLowerCase();
   String[] arStr = str.split(" ");
   for (int i = 0; i < arStr.length; i++) {
    String s = arStr[i];
    int length = str.length();
    str = str.replaceAll(s, "");
    count = length - str.length();
    if (count > s.length()) {
     System.out.println(s);
    }
   }
  }
 }
}

The above logic will help you how to find the duplicate characters without using the Collections API in java. Now, you can see the below by using Collection API how can we find the same duplicate characters in given string.

import java.util.HashMap;
import java.util.Set;

public class FindDuplicates {

 public static void main(String[] args) {
  String str = "AMBERROADSOFTWARE";
  int count = 0;

  char[] chArray = str.toCharArray();
  HashMap<Character, Integer> hm = new HashMap<Character, Integer>();
  for (Character ch : chArray) {
   if (!hm.containsKey(ch)) {
    hm.put(ch, 1);
   } else {
    count = hm.get(ch);
    hm.put(ch, count + 1);
   }
  }

  if (hm != null) {
   Set<Character> charSet = hm.keySet();
   for (char ch3 : charSet) {
    System.out.println(ch3 + " repeated at " + hm.get(ch3));
   }
  }
 }
}
OutPut:
D repeated 1
T repeated 1
E repeated 2
W repeated 1
F repeated 1
A repeated 3
S repeated 1
B repeated 1
R repeated 3
M repeated 1
O repeated 2

Popular posts from this blog

how to count the page views by using JSP

Exception in thread "main" java.lang.NoClassDefFoundError: javax/transaction/SystemException

Multithreading in java with example