w3resource

C++ String Exercises: Find a word with highest number of repeated letters

C++ String: Exercise-11 with Solution

Write a C++ program to find a word in a given string that has the highest number of repeated letters.

Visual Presentation:

C++ Exercises: Find a word in a given string which has the highest number of repeated letters

Sample Solution:

C++ Code :

#include <iostream> // Including input/output stream library
#include <string> // Including string library for string operations
using namespace std; // Using the standard namespace

// Function to find the word with the highest number of repeated letters
string highest_repeated_letters(string str) {

    int str_size = str.length(); // Store the length of the input string
    int ctr1 = 0, ctr2 = 0, high1 = 0, high2 = 0; // Initializing counters and variables
    int start = -1, end = 0; // Initializing start and end indices
    int temp1, temp2; // Temporary variables for storing indices
    char letter; // Variable to store letters

    for (int x = 0; x < str_size; x++, end++) // Loop through the input string
    {
        if (start == -1) // If start is not initialized
        {
            start = x; // Set the start index
        }

        if (str[x] == ' ' || x == str_size - 1) // If a word is encountered (space or end of string)
        {
            if (end == str_size - 1) // Handle case when the last word doesn't end with space
            {
                end += 1; // Adjust the end index
            }

            for (int y = start; y < end; y++) // Loop within the word boundaries
            {
                letter = str[y]; // Get the letter at index y

                for (int z = start; z < end; z++) // Loop within the word to check for repeated letters
                {
                    if (y == z)
                    {
                        continue; // Skip comparison with the same letter
                    }
                    else if (letter == str[z]) // If letters match, count repetition
                    {
                        ctr1++;
                    }
                }

                if (ctr1) // If there are repetitions
                {
                    ctr2++; // Increase the counter for repeated letters
                }

                // Check if the current word has the highest number of repeated letters
                if (ctr1 > high1 && ctr2 > high2)
                {
                    high1 = ctr1;
                    high2 = ctr2;
                    temp1 = start;
                    temp2 = end;
                }

                ctr1 = 0; // Reset the letter counter for the next iteration
            }

            // Update variables for the word with the highest number of repeated letters
            if (ctr2 > high2)
            {
                high2 = ctr2;
                temp1 = start;
                temp2 = end;
            }
            ctr2 = 0; // Reset the repeated letters counter for the next word

            start = end + 1; // Update the start index for the next word
        }
    }

    if (high1 > 0) // If a word with repeated letters is found
    {
        string repeated;

        // Extract the word with the highest number of repeated letters
        for (temp1; temp1 < temp2; temp1++)
        {
            repeated.push_back(str[temp1]);
        }

        return repeated; // Return the word with the highest number of repeated letters
    }
    else
    {
        return "-1"; // Return -1 if no word with repeated letters is found
    }
}

// Main function
int main() {

    // Output the original strings and words with the highest number of repeated letters
    cout << "Original string: Print a welcome text in a separate line.\nWord which has the highest number of repeated letters. ";
    cout << highest_repeated_letters("Print a welcome text in a separate line.") << endl;

    cout << "\nOriginal string: Count total number of alphabets, digits and special characters in a string.\nWord which has the highest number of repeated letters. ";
    cout << highest_repeated_letters("Count total number of alphabets, digits and special characters in a string.") << endl;

    cout << "\nOriginal string: abcdef abcdfgh ijklop 1234.\nWord which has the highest number of repeated letters. ";
    cout << highest_repeated_letters("abcdef abcdfgh ijklop 1234") << endl; // Not found, returns -1

    return 0; // Return 0 to indicate successful completion
}

Sample Output:

Original string: Print a welcome text in a separate line.
Word which has the highest number of repeated letters. separate

Original string: Count total number of alphabets, digits and special characters in a string.
Word which has the highest number of repeated letters. characters

Original string: abcdef abcdfgh ijklop 1234.
Word which has the highest number of repeated letters. -1

Flowchart:

Flowchart: Find a word in a given string which has the highest number of repeated letters.

C++ Code Editor:

Contribute your code and comments through Disqus.

Previous C++ Exercise: Check if a given string is a Palindrome or not.
Next C++ Exercise: Insert a dash between two odd numbers in a string.

What is the difficulty level of this exercise?



Follow us on Facebook and Twitter for latest update.