Open in App
Not now

# Append digits to the end of duplicate strings to make all strings in an array unique

• Difficulty Level : Medium
• Last Updated : 21 Sep, 2022

Given an array arr[] consisting of N strings, the task is to modify the array by replacing the duplicate strings by appending any number such that all the strings in the array are unique.

Examples:

Input: S = {“aa”, “bb”, “cc”, “bb”, “aa”, “aa”, “aa”}
Output: {“aa”, “bb”, “cc”, “bb1”, “aa1”, “aa2”, “aa3”}
Explanation:
The output of the second occurrence of “bb” is “bb1”
The output of the second occurrence of “aa” is “aa1”
The output of the third occurrence of “aa” is “aa2”
The output of the fourth occurrence of “aa” is “aa3”

Input: S = {“aa”, “bb”, “cc”, “aa”}
Output: {“aa”, “bb”, “cc”, “aa1”}

Approach: The idea is to traverse the array and store the frequency of each string in arr[] in a Hashmap. While storing the frequency, if the string has no previous occurrences, then leave the string unchanged. Otherwise, append its frequency at the end. Finally, print all the unique strings present in the array arr[].

Below is the implementation of the above approach:

## C++

 `// C++ program for the above approach` `#include ` `using` `namespace` `std;`   `// Function to replace duplicate strings` `// by alphanumeric strings to make all` `// strings in the array unique` `void` `replaceDuplicates(` `    ``vector& names)` `{` `    ``// Store the frequency of strings` `    ``unordered_map hash;`   `    ``// Iterate over the array` `    ``for` `(``int` `i = 0;` `         ``i < names.size(); i++) {`   `        ``// For the first occurrence,` `        ``// update the frequency count` `        ``if` `(hash.count(names[i]) == 0)` `            ``hash[names[i]]++;`   `        ``// Otherwise` `        ``else` `{`   `            ``int` `count = hash[names[i]]++;`   `            ``// Append frequency count` `            ``// to end of the string` `            ``names[i] += to_string(count);` `        ``}` `    ``}`   `    ``// Print the modified array` `    ``for` `(``int` `i = 0;` `         ``i < names.size(); i++) {` `        ``cout << names[i] << ``" "``;` `    ``}` `}`   `// Driver Code` `int` `main()` `{` `    ``vector str` `        ``= { ``"aa"``, ``"bb"``, ``"cc"``, ``"bb"``,` `            ``"aa"``, ``"aa"``, ``"aa"` `};`   `    ``// Function Call` `    ``replaceDuplicates(str);`   `    ``return` `0;` `}`

## Java

 `// Java program for the above approach` `import` `java.io.*;` `import` `java.util.*;`   `class` `GFG{`   `// Function to replace duplicate strings` `// by alphanumeric strings to make all` `// strings in the array unique` `static` `void` `replaceDuplicates(String[] names)` `{` `    `  `    ``// Store the frequency of strings` `    ``HashMap hash = ``new` `HashMap<>();`   `    ``// Iterate over the array` `    ``for``(``int` `i = ``0``; i < names.length; i++)` `    ``{` `        `  `        ``// For the first occurrence,` `        ``// update the frequency count` `        ``if` `(!hash.containsKey(names[i]))` `            ``hash.put(names[i], ``1``);`   `        ``// Otherwise` `        ``else` `        ``{` `            ``int` `count = hash.get(names[i]);` `            ``hash.put(names[i], hash.get(names[i]) + ``1``);`   `            ``// Append frequency count` `            ``// to end of the string` `            ``names[i] += Integer.toString(count);` `        ``}` `    ``}`   `    ``// Print the modified array` `    ``for``(``int` `i = ``0``; i < names.length; i++)` `    ``{` `        ``System.out.print(names[i] + ``' '``);` `    ``}` `}`   `// Driver Code` `public` `static` `void` `main(String[] args)` `{` `    ``String[] str = { ``"aa"``, ``"bb"``, ``"cc"``, ` `                     ``"bb"``, ``"aa"``, ``"aa"``, ``"aa"` `};`   `    ``// Function Call` `    ``replaceDuplicates(str);` `}` `}`   `// This code is contributed by akhilsaini`

## Python3

 `# Python3 program for the above approach`   `# Function to replace duplicate strings` `# by alphanumeric strings to make all` `# strings in the array unique` `def` `replaceDuplicates(names):` `    `  `    ``# Store the frequency of strings` `    ``hash` `=` `{}`   `    ``# Iterate over the array` `    ``for` `i ``in` `range``(``0``, ``len``(names)):` `        `  `        ``# For the first occurrence,` `        ``# update the frequency count` `        ``if` `names[i] ``not` `in` `hash``:` `            ``hash``[names[i]] ``=` `1`   `        ``# Otherwise` `        ``else``:` `            ``count ``=` `hash``[names[i]]` `            ``hash``[names[i]] ``+``=` `1`   `            ``# Append frequency count` `            ``# to end of the string` `            ``names[i] ``+``=` `str``(count)`   `    ``# Print the modified array` `    ``for` `i ``in` `range``(``0``, ``len``(names)):` `        ``print``(names[i], end ``=` `' '``)`   `# Driver Code` `if` `__name__ ``=``=` `'__main__'``:` `    `  `    ``str1 ``=` `[ ``"aa"``, ``"bb"``, ``"cc"``, ` `             ``"bb"``, ``"aa"``, ``"aa"``, ``"aa"` `]`   `    ``# Function Call` `    ``replaceDuplicates(str1)`   `# This code is contributed by akhilsaini`

## C#

 `// C# program for the above approach` `using` `System;` `using` `System.Collections.Generic;`   `class` `GFG{`   `// Function to replace duplicate strings` `// by alphanumeric strings to make all` `// strings in the array unique` `static` `void` `replaceDuplicates(``string``[] names)` `{` `    `  `    ``// Store the frequency of strings` `    ``Dictionary<``string``, ` `               ``int``> hash = ``new` `Dictionary<``string``,` `                                          ``int``>();` `                                          `  `    ``// Iterate over the array` `    ``for``(``int` `i = 0; i < names.Length; i++)` `    ``{` `        `  `        ``// For the first occurrence,` `        ``// update the frequency count` `        ``if` `(!hash.ContainsKey(names[i]))` `            ``hash[names[i]] = 1;`   `        ``// Otherwise` `        ``else` `        ``{` `            ``int` `count = hash[names[i]];` `            ``hash[names[i]] += 1;`   `            ``// Append frequency count` `            ``// to end of the string` `            ``names[i] += count.ToString();` `        ``}` `    ``}`   `    ``// Print the modified array` `    ``for``(``int` `i = 0; i < names.Length; i++) ` `    ``{` `        ``Console.Write(names[i] + ``' '``);` `    ``}` `}`   `// Driver Code` `public` `static` `void` `Main()` `{` `    ``string``[] str = { ``"aa"``, ``"bb"``, ``"cc"``, ` `                     ``"bb"``, ``"aa"``, ``"aa"``, ``"aa"` `};`   `    ``// Function Call` `    ``replaceDuplicates(str);` `}` `}`   `// This code is contributed by akhilsaini`

## Javascript

 ``

Output:

`aa bb cc bb1 aa1 aa2 aa3`

Time Complexity: O(N)

Auxiliary Space: O(N)

My Personal Notes arrow_drop_up
Related Articles