Make alphabets using the elements of an array - GeeksforGeeks

21 May, 2021
Given an array of positive integers, find all the alphabets that we can make using elements of the array. Examples :  
Input : arr[] = {6, 5}
Output : A
In this example, we can take 6 and 5
as 65 that gives us A.

Input : arr[] = {5, 6, 6}
Output : A B
Here we can take 6 and 5 as 65 to make A. 
And 6 and 6 as 66 to make B.

Input : arr[] = {1, 0, 1, 0}
Output: d e n
Here we can take 1, 0 and 0 as 100 to make d.
1, 0 and 1 as 101 to make e. And 
1, 1, and 0 as 110 to make n.
 
Approach : The approach is to iterate a loop from char A to Z and check whether both the digits of their ASCII values (ASCII value of A is 65 and digits of ASCII value for A is 6 and 5) exist in the array or not. For this, we have to calculate frequency of each element of the array. Same as for small alphabets.Below is the implementation of the above approach.  
C++
Java
Python
C#
Javascript
// CPP program to find all the capital characters// we can make from the given array.#include <bits/stdc++.h>using namespace std; // Function returns all the capital characters//  we can make.string findCharacters(int arr[], int n){    string ans = "";    int brr[10] = { 0 };     // Calculating the frequency of the elements.    for (int i = 0; i < n; i++)        brr[arr[i]]++;     // Checking for capital alphabets.    for (char ch = 'A'; ch <= 'Z'; ch++)    {         // Storing one digit in x and other in y.        int x = ch / 10;        int y = ch % 10;        brr[x]--;        brr[y]--;         // If both the digits exist.        if (brr[x] >= 0 && brr[y] >= 0)        {             // Putting in the result            ans += ch;            ans += ' ';        }        brr[x]++;        brr[y]++;    }     // Checking for alphabets a, b and c.    for (char ch = 'a'; ch <= 'c'; ch++)    {        int x = ch / 10;        int y = ch % 10;        brr[x]--;        brr[y]--;         // If all the digits exist.        if (brr[x] >= 0 && brr[y] >= 0)        {             // Putting in the result            ans += ch;            ans += ' ';        }        brr[x]++;        brr[y]++;    }     // Checking for d to z.    for (char ch = 'd'; ch <= 'z'; ch++)    {        int x = (ch / 10) / 10;        int y = (ch / 10) % 10;        int z = ch % 10;        brr[x]--;        brr[y]--;        brr[z]--;         // If all the digits exist.        if (brr[x] >= 0 && brr[y] >= 0 && brr[z] >= 0)        {             // Putting in the result            ans += ch;            ans += ' ';        }        brr[x]++;        brr[y]++;        brr[z]++;    }     return ans;} // Driver functionint main(){    int arr[] = { 5, 6, 6 }, n;    n = sizeof(arr) / sizeof(arr[0]);    cout << findCharacters(arr, n) << endl;}
// Java program to find all the capital characters// we can make from the given array.import java.util.*;import java.lang.*; public class GeeksforGeeks{     // Function returns all the capital characters we can make.    public static String findCharacters(int arr[], int n)    {        String ans = "";        int[] brr = new int[10];         // Calculating the frequency of the elements.        for (int i = 0; i < n; i++)            brr[arr[i]]++;         for (char ch = 'A'; ch <= 'Z'; ch++)        {             // Storing one digit in x and other in y.            int x = ch / 10;            int y = ch % 10;            brr[x]--;            brr[y]--;             // If both the digits exist.            if (brr[x] >= 0 && brr[y] >= 0)            {                 // Putting in the result                ans += ch;                ans += ' ';            }            brr[x]++;            brr[y]++;        }         // Checking for alphabets a, b and c.        for (char ch = 'a'; ch <= 'c'; ch++)        {            int x = ch / 10;            int y = ch % 10;            brr[x]--;            brr[y]--;             // If all the digits exist.            if (brr[x] >= 0 && brr[y] >= 0)            {                 // Putting in the result                ans += ch;                ans += ' ';            }            brr[x]++;            brr[y]++;        }         // Checking for d to z.        for (char ch = 'd'; ch <= 'z'; ch++)        {            int x = (ch / 10) / 10;            int y = (ch / 10) % 10;            int z = ch % 10;            brr[x]--;            brr[y]--;            brr[z]--;             // If all the digits exist.            if (brr[x] >= 0 && brr[y] >= 0 && brr[z] >= 0)            {                 // Putting in the result                ans += ch;                ans += ' ';            }            brr[x]++;            brr[y]++;            brr[z]++;        }         return ans;    }     // Driver function    public static void main(String argc[])    {        int arr[] = { 5, 6, 6 }, n;        n = 3;        System.out.println(findCharacters(arr, n));    }}
# Python3 program to find all the capital characters# we can make from the given array. # Function returns all the capital characters# we can make.def findCharacters(arr, n):    ans = ""    brr = [0] * 10     # Calculating the frequency of the elements.    for i in range(n):        brr[arr[i]] += 1     # Checking for capital alphabets.    for ch in range(ord('A'), ord('Z') + 1):         # Storing one digit in x and other in y.        x = ch // 10        y = ch % 10        brr[x] -= 1        brr[y] -= 1         # If both the digits exist.        if (brr[x] >= 0 and brr[y] >= 0):             # Putting in the result            ans += chr(ch)            ans += ' '        brr[x] += 1        brr[y] += 1     # Checking for alphabets a, b and c.    for ch in range(ord('a'), ord('c') + 1):        x = ch // 10        y = ch % 10        brr[x] -= 1        brr[y] -= 1         # If all the digits exist.        if (brr[x] >= 0 and brr[y] >= 0):             # Putting in the result            ans += chr(ch)            ans += ' '        brr[x] += 1        brr[y] += 1     # Checking for d to z.    for ch in range(ord('d'), ord('z') + 1):        x = (ch // 10) // 10        y = (ch // 10) % 10        z = ch % 10        brr[x] -= 1        brr[y] -= 1        brr[z] -= 1         # If all the digits exist.        if (brr[x] >= 0 and brr[y] >= 0 and brr[z] >= 0):             # Putting in the result            ans += chr(ch)            ans += ' '        brr[x] += 1        brr[y] += 1        brr[z] += 1     return ans # Driver functionarr = [5, 6, 6]n = len(arr)print(findCharacters(arr, n)) # This code is contributed by mohit kumar 29
// C# program to find all the capital// characters we can make from the given array.using System; class GeeksforGeeks{    // Function returns all the capital    // characters we can make.    public static String findCharacters(int []arr, int n )    {        String ans = "";        int []brr = new int[10];         // Calculating the frequency of the elements.        for (int i = 0; i < n; i++)            brr[arr[i]]++;         for (char ch = 'A'; ch <= 'Z'; ch++)        {            // Storing one digit in x and other in y.            int x = ch / 10;            int y = ch % 10;            brr[x]--;            brr[y]--;             // If both the digits exist.            if (brr[x] >= 0 && brr[y] >= 0)            {                // Putting in the result                ans += ch;                ans += ' ';            }            brr[x]++;            brr[y]++;        }         // Checking for alphabets a, b and c.        for (char ch = 'a'; ch <= 'c'; ch++)        {            int x = ch / 10;            int y = ch % 10;            brr[x]--;            brr[y]--;             // If all the digits exist.            if (brr[x] >= 0 && brr[y] >= 0)            {                 // Putting in the result                ans += ch;                ans += ' ';            }            brr[x]++;            brr[y]++;        }         // Checking for d to z.        for (char ch = 'd'; ch <= 'z'; ch++)        {            int x = (ch / 10) / 10;            int y = (ch / 10) % 10;            int z = ch % 10;            brr[x]--;            brr[y]--;            brr[z]--;             // If all the digits exist.            if (brr[x] >= 0 && brr[y] >= 0 && brr[z] >= 0)            {                // Putting in the result                ans += ch;                ans += ' ';            }            brr[x]++;            brr[y]++;            brr[z]++;        }         return ans;    }     // Driver function    public static void Main()    {        int []arr = {5, 6, 6};        int n = 3;        Console.Write(findCharacters(arr, n));    }} // This code is contributed by nitin mittal.
<script> // JavaScript program to find// all the capital characters// we can make from the given array.         // Function returns all the capital    // characters we can make.    function findCharacters(arr,n)    {        let ans = "";        let brr = new Array(10);        for(let i=0;i<brr.length;i++)        {            brr[i]=0;        }           // Calculating the frequency of the elements.        for (let i = 0; i < n; i++)            brr[arr[i]]++;           for (let ch = 'A'.charCodeAt(0);        ch <= 'Z'.charCodeAt(0); ch++)        {               // Storing one digit in x and other in y.            let x = Math.floor(ch / 10);            let y = ch % 10;            brr[x]--;            brr[y]--;               // If both the digits exist.            if (brr[x] >= 0 && brr[y] >= 0)            {                   // Putting in the result                ans += String.fromCharCode(ch);                ans += ' ';            }            brr[x]++;            brr[y]++;        }           // Checking for alphabets a, b and c.        for (let ch = 'a'.charCodeAt(0);        ch <= 'c'.charCodeAt(0); ch++)        {            let x = Math.floor(ch / 10);            let y = ch % 10;            brr[x]--;            brr[y]--;               // If all the digits exist.            if (brr[x] >= 0 && brr[y] >= 0)            {                   // Putting in the result                ans += String.fromCharCode(ch);                ans += ' ';            }            brr[x]++;            brr[y]++;        }           // Checking for d to z.        for (let ch = 'd'.charCodeAt(0);        ch <= 'z'.charCodeAt(0); ch++)        {            let x = Math.floor((ch / 10) / 10);            let y = (ch / 10) % 10;            let z = ch % 10;            brr[x]--;            brr[y]--;            brr[z]--;               // If all the digits exist.            if (brr[x] >= 0 && brr[y] >= 0 &&            brr[z] >= 0)            {                   // Putting in the result                ans += String.fromCharCode(ch);                ans += ' ';            }            brr[x]++;            brr[y]++;            brr[z]++;        }           return ans;    }         // Driver function    let arr=[5, 6, 6 ];    let n = 3;    document.write(findCharacters(arr, n));      // This code is contributed by patel2127 </script>
Output:  
A B
Time Complexity: O(n) 
nitin mittal
gfg_sal_gfg
mohit kumar 29
patel2127
frequency-counting
Arrays
Arrays
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Chocolate Distribution Problem
Count pairs with given sum
Window Sliding Technique
Reversal algorithm for array rotation
Next Greater Element
Find a triplet that sum to a given value
Find duplicates in O(n) time and O(1) extra space | Set 1
Find subarray with given sum | Set 1 (Nonnegative Numbers)
Remove duplicates from sorted array
Move all negative numbers to beginning and positive to end with constant extra space