Java 8 Program To Find First Repeated Character in a String

🎓 Top 15 Udemy Courses (80-90% Discount): My Udemy Courses - Ramesh Fadatare — All my Udemy courses are real-time and project oriented courses.

▶️ Subscribe to My YouTube Channel (178K+ subscribers): Java Guides on YouTube

▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube

Introduction

Finding the first repeated character in a string is a common problem in text processing. With Java 8, this task can be efficiently handled using streams. This guide will show you how to create a Java program that identifies the first repeated character in a given string.

Problem Statement

Create a Java program that:

  • Takes a string as input.
  • Finds and returns the first repeated character in the string.
  • If no character is repeated, returns an appropriate message.

Example 1:

  • Input: "programming"
  • Output: The first repeated character is 'r'

Example 2:

  • Input: "abcdef"
  • Output: No repeated characters found.

Solution Steps

  1. Prompt for Input: Use the Scanner class to read a string input from the user.
  2. Use Java 8 Streams to Find Repeated Character:
    • Convert the string to a stream of characters.
    • Use a Set to track characters that have been seen.
    • Find the first character that has already been seen.
  3. Display the Result: Print the first repeated character or an appropriate message if no character is repeated.

Java Program

Java 8 Program to Find the First Repeated Character in a String

import java.util.HashSet;
import java.util.Optional;
import java.util.Scanner;
import java.util.Set;
import java.util.stream.Collectors;

/**
 * Java 8 Program to Find the First Repeated Character in a String
 * Author: https://www.javaguides.net/
 */
public class FirstRepeatedCharacter {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // Step 1: Prompt the user for input
        System.out.print("Enter a string: ");
        String input = scanner.nextLine();

        // Step 2: Find the first repeated character using Java 8 streams
        Optional<Character> firstRepeated = findFirstRepeatedCharacter(input);

        // Step 3: Display the result
        if (firstRepeated.isPresent()) {
            System.out.println("The first repeated character is '" + firstRepeated.get() + "'");
        } else {
            System.out.println("No repeated characters found.");
        }
    }

    // Method to find the first repeated character in a string
    public static Optional<Character> findFirstRepeatedCharacter(String input) {
        Set<Character> seenCharacters = new HashSet<>();

        return input.chars()  // Convert the string to an IntStream of character codes
                .mapToObj(c -> (char) c)  // Convert character codes to characters
                .filter(c -> !seenCharacters.add(c))  // Filter characters that are already in the set
                .findFirst();  // Return the first repeated character if found
    }
}

Explanation

  • Input: The program prompts the user to enter a string.

  • Finding the First Repeated Character Using Streams:

    • The chars() method converts the string into an IntStream of character codes.
    • mapToObj(c -> (char) c) converts these character codes back to characters.
    • The filter() method is used to check if the character has already been seen by trying to add it to a Set. If the character is already in the Set, add() will return false, making it a repeated character.
    • findFirst() returns the first repeated character if it exists, wrapped in an Optional.
  • Output: The program prints the first repeated character or a message indicating that no repeated characters were found.

Output Example

Example 1:

Enter a string: programming
The first repeated character is 'r'

Example 2:

Enter a string: abcdef
No repeated characters found.

Example 3:

Enter a string: javaprogram
The first repeated character is 'a'

Explanation of Edge Cases:

  • Example 1: The string contains repeated characters, and the first repeated character is 'r'.
  • Example 2: The string contains all unique characters, so no repeated characters are found.
  • Example 3: The string contains multiple repeated characters, and the first repeated character is 'a'.

Conclusion

This Java 8 program efficiently finds the first repeated character in a string using streams and a Set to track seen characters. The program handles both cases where a repeated character exists and where all characters are unique. The use of streams makes the solution concise and leverages Java 8's functional programming capabilities.

My Top and Bestseller Udemy Courses. The sale is going on with a 70 - 80% discount. The discount coupon has been added to each course below:

Comments

Spring Boot 3 Paid Course Published for Free
on my Java Guides YouTube Channel

Subscribe to my YouTube Channel (165K+ subscribers):
Java Guides Channel

Top 10 My Udemy Courses with Huge Discount:
Udemy Courses - Ramesh Fadatare