Frequently Asked Java Program 28: Java Program to Remove Duplicate Characters From Word Using Collection Concept

Hello Folks,

As part of Frequently Asked Java Programs In Interviews For Freshers And Experienced, in this post we will see a java program to Remove Duplicate Characters From Word Using Collection Concept.

Problem Statement:

Remove all duplicate characters from given word. Keep the order of char as it appears.

User Input – abcabcabcabc

Output: abc

Problem Solution:

Step by step logic:

  1. Since we need to find duplicate characters in a word, we need to extract all characters from word. We can use toCharArray() method of String class to get an array of chars of words.
  2. We need to store chars in a container who does not allow duplicates and maintains insertion order. We can use LinkedHashSet container for the same.
  3. Iterate char array and add each char in to LinkedHashSet container . After iteration, container will have only single occurrence of each char.
  4. Now we need to form a string using chars of container. We can use StringBuilder or StringBuffer for the same.

Java Program:

package StringPrograms;

import java.util.LinkedHashSet;
import java.util.Scanner;

public class RemoveDuplicatesCharFromWord {

	public static String removeDuplicateCharFromGivenWord(String inputWord) {
		/*
		 * Since we need to check for duplicate chars in word, we must need to extract
		 * each char of word. And the best way is to convert in to char array.
		 */
		inputWord = inputWord.toLowerCase();
		char charsOfWord[] = inputWord.toCharArray();

		/*
		 * Since we need to remove duplicates and maintain the insertion order as well,
		 * we will use LinkedHashSet with Generic as Character.
		 */
		LinkedHashSet wordWithoutDuplicate = new LinkedHashSet<>();

		/*
		 * Iterate char array and add in to container. Duplicate will not be added.
		 */
		for (Character c : charsOfWord)
			wordWithoutDuplicate.add(c);

		/*
		 * We need to create word by appending all unique characters in sequence. SInce
		 * String is immutable, we need to use StringBuilder or StringBuffer.
		 */
		StringBuilder finalOutput = new StringBuilder();
		for (Character ch : wordWithoutDuplicate)
			finalOutput.append(ch);

		// Returning final output
		return finalOutput.toString();

	}

	public static void main(String[] args) {

		// User input to trim spaces
		Scanner sc = new Scanner(System.in);
		System.out.println("Please enter the word to remove duplicate chars:");

		String userInput = sc.nextLine();

		sc.close();

		System.out.println("You entered : \"" + userInput + "\"");

		System.out.println(
				"String after removing duplicate chars: \"" + removeDuplicateCharFromGivenWord(userInput) + "\"");
	}

}


Output:

Please enter the word to remove duplicate chars:
abcabcabcabc
You entered : “abcabcabcabc”
String after removing duplicate chars: “abc”

===================================================

Please enter the word to remove duplicate chars:
banana
You entered : “banana”
String after removing duplicate chars: “ban”

You can run above program for multiple inputs and if it fails for any condition, let me know.

#HappyCoding

Leave a Reply

Your email address will not be published. Required fields are marked *