Make alphabets using the elements of an array
Last Updated :
27 Jul, 2022
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++
// 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 function
int main()
{
int arr[] = { 5, 6, 6 }, n;
n = sizeof(arr) / sizeof(arr[0]);
cout << findCharacters(arr, n) << endl;
}
Java
// 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));
}
}
Python
# 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 function
arr = [5, 6, 6]
n = len(arr)
print(findCharacters(arr, n))
# This code is contributed by mohit kumar 29
C#
// 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.
JavaScript
<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>
Time Complexity: O(n)
Similar Reads
Inserting Elements in an Array - Array Operations In this post, we will look into insertion operation in an Array, i.e., how to insert into an Array, such as:Insert Element at the Beginning of an ArrayInsert Element at a given position in an ArrayInsert Element at the End of an ArrayInsert Element at the Beginning of an ArrayInserting an element at
2 min read
Deleting Elements in an Array - Array Operations In this post, we will look into deletion operation in an Array, i.e., how to delete an element from an Array, such as:Delete an Element from the Beginning of an ArrayDelete an Element from a Given Position in an ArrayDelete First Occurrence of Given Element from an ArrayRemove All Occurrences of an
4 min read
How to Insert a New Element in an Array in PHP ? In PHP, an array is a type of data structure that allows us to store similar types of data under a single variable. The array is helpful to create a list of elements of similar types, which can be accessed using their index or key.We can insert an element or item in an array using the below function
5 min read
Arrays and Strings in C++ Arrays An array in C or C++ is a collection of items stored at contiguous memory locations and elements can be accessed randomly using indices of an array. They are used to store similar types of elements as in the data type must be the same for all elements. They can be used to store the collection
5 min read
How to Get the Size of an Array in JavaScript To get the size (or length) of an array in JavaScript, we can use array.length property. The size of array refers to the number of elements present in that array. Syntaxconst a = [ 10, 20, 30, 40, 50 ] let s = a.length; // s => 5 The JavaScript Array Length returns an unsigned integer value that
2 min read