Open in App
Not now

# Modify array by removing characters from their Hexadecimal representations which are present in a given string

• Last Updated : 04 Jan, 2023

Given an array arr[] of size N and a string S, the task is to modify given array by removing all characters from their hexadecimal representations that are present in S and then replacing the equivalent decimal element back into the array.

Examples:

Input: arr[] = {74, 91, 31, 122}, S = “1AB”
Output: {4, 5, 15, 7}
Explanation:
74 -> (4A)16 -> (4)16 -> 4
91 -> (5B)16 -> (5)16 -> 5
31 -> (1F)16 -> (F)16 -> 15
122 -> (7A)16 -> (7)16 -> 7

Input: arr[] = {1450, 1716, 284, 843}, S = “ABFE3”
Output: {5, 100, 284, 4}

Approach: Follow the steps below to solve the problem:

Below is the implementation of the above approach:

## C++

 `// C++ program for the above approach` `#include ` `using` `namespace` `std;`   `// Function to convert a decimal number` `// to its equivalent hexadecimal number` `string decHex(``int` `n)` `{` `  ``char` `alpha[] = { ``'A'``, ``'B'``, ``'C'``, ``'D'``, ``'E'``, ``'F'` `};` `  ``string ans;` `  ``while` `(n > 0) {` `    ``if` `(n % 16 < 10) {` `      ``ans += to_string(n % 16);` `    ``}` `    ``else` `{` `      ``ans += alpha[n % 16 - 10];` `    ``}` `    ``n /= 16;` `  ``}` `  ``reverse(ans.begin(), ans.end());` `  ``return` `ans;` `}`   `// Function to convert hexadecimal number` `// to its equavalent decimal number` `int` `hexDec(string convertedHex)` `{`   `  ``// Stores characters with their` `  ``// respective hexadecimal values` `  ``char` `mp[] = { 10, 11, 12, 13, 14, 15 };`   `  ``// Stores answer` `  ``int` `ans = 0;` `  ``int` `pos = 0;`   `  ``// Traverse the string` `  ``reverse(convertedHex.begin(), convertedHex.end());` `  ``for` `(``char` `ch : convertedHex) {`   `    ``// If digit` `    ``if` `(``isdigit``(ch)) {` `      ``ans += ((``int``)``pow``(16, pos)) * (ch - ``'0'``);` `    ``}`   `    ``// If character` `    ``else` `{` `      ``ans += ((``int``)``pow``(16, pos)) * mp[ch - ``'A'``];` `    ``}` `    ``pos += 1;` `  ``}` `  ``// Return the answer` `  ``return` `ans;` `}`   `// Function to move all the` `// alphabets to front` `string removeChars(string hexaVal, string S)` `{` `  ``set<``char``> setk;` `  ``for` `(``char` `ch : S) {` `    ``setk.insert(ch);` `  ``}` `  ``string ans = ``""``;` `  ``for` `(``char` `ch : hexaVal) {` `    ``if` `(setk.find(ch) != setk.end()) {` `      ``continue``;` `    ``}` `    ``ans += ch;` `  ``}` `  ``return` `ans;` `}`   `// Function to modify each array` `// element by removing characters` `// from their hexadecimal representation` `// which are present in a given string` `void` `convertArr(``int` `arr[], ``int` `N, string S)` `{`   `  ``// Traverse the array` `  ``for` `(``int` `i = 0; i < N; i++) {`   `    ``// Stores hexadecimal value` `    ``string hexaVal = decHex(arr[i]);`   `    ``// Remove the characters from hexadecimal` `    ``// representation present in string S` `    ``string convertedHex = removeChars(hexaVal, S);`   `    ``// Stores decimal value` `    ``int` `decVal = hexDec(convertedHex);`   `    ``// Replace array element` `    ``arr[i] = decVal;` `  ``}`   `  ``// Print the modified array` `  ``for` `(``int` `i = 0; i < N; i++) {` `    ``cout << arr[i] << ``" "``;` `  ``}` `}`   `// Driven Program` `int` `main()` `{` `  ``// Given array` `  ``int` `arr[] = { 74, 91, 31, 122 };` `  ``int` `N = ``sizeof``(arr) / ``sizeof``(arr[0]);`   `  ``// Given string` `  ``string S = ``"1AB"``;`   `  ``// Function call to modify` `  ``// array by given operations` `  ``convertArr(arr, N, S);`   `  ``return` `0;` `}`   `// This code is contributed by Kingash.`

## Java

 `// java program for the above approach` `import` `java.io.*;` `import` `java.lang.*;` `import` `java.util.*;`   `class` `GFG {`   `  ``// Function to convert a decimal number` `  ``// to its equivalent hexadecimal number` `  ``static` `String decHex(``int` `n)` `  ``{` `    ``char` `alpha[] = { ``'A'``, ``'B'``, ``'C'``, ``'D'``, ``'E'``, ``'F'` `};` `    ``StringBuilder ans = ``new` `StringBuilder(``""``);` `    ``while` `(n > ``0``) {` `      ``if` `(n % ``16` `< ``10``) {` `        ``ans.append(Integer.toString(n % ``16``));` `      ``}` `      ``else` `{` `        ``ans.append(alpha[n % ``16` `- ``10``]);` `      ``}` `      ``n /= ``16``;` `    ``}` `    ``ans = ans.reverse();` `    ``return` `ans.toString();` `  ``}`   `  ``// Function to convert hexadecimal number` `  ``// to its equavalent decimal number` `  ``static` `int` `hexDec(String convertedHex)` `  ``{`   `    ``// Stores characters with their` `    ``// respective hexadecimal values` `    ``char` `mp[] = { ``10``, ``11``, ``12``, ``13``, ``14``, ``15` `};`   `    ``// Stores answer` `    ``int` `ans = ``0``;` `    ``int` `pos = ``0``;`   `    ``// Traverse the string` `    ``StringBuilder s = ``new` `StringBuilder(convertedHex);` `    ``convertedHex = s.reverse().toString();` `    ``for` `(``char` `ch : convertedHex.toCharArray()) {`   `      ``// If digit` `      ``if` `(Character.isDigit(ch)) {` `        ``ans += ((``int``)Math.pow(``16``, pos))` `          ``* (ch - ``'0'``);` `      ``}`   `      ``// If character` `      ``else` `{` `        ``ans += ((``int``)Math.pow(``16``, pos))` `          ``* mp[ch - ``'A'``];` `      ``}` `      ``pos += ``1``;` `    ``}` `    ``// Return the answer` `    ``return` `ans;` `  ``}`   `  ``// Function to move all the` `  ``// alphabets to front` `  ``static` `String removeChars(String hexaVal, String S)` `  ``{` `    ``HashSet setk = ``new` `HashSet<>();` `    ``for` `(``char` `ch : S.toCharArray()) {` `      ``setk.add(ch);` `    ``}` `    ``String ans = ``""``;` `    ``for` `(``char` `ch : hexaVal.toCharArray()) {` `      ``if` `(setk.contains(ch)) {` `        ``continue``;` `      ``}` `      ``ans += ch;` `    ``}` `    ``return` `ans;` `  ``}`   `  ``// Function to modify each array` `  ``// element by removing characters` `  ``// from their hexadecimal representation` `  ``// which are present in a given string` `  ``static` `void` `convertArr(``int` `arr[], String S)` `  ``{`   `    ``// Traverse the array` `    ``for` `(``int` `i = ``0``; i < arr.length; i++) {`   `      ``// Stores hexadecimal value` `      ``String hexaVal = decHex(arr[i]);`   `      ``// Remove the characters from hexadecimal` `      ``// representation present in string S` `      ``String convertedHex = removeChars(hexaVal, S);`   `      ``// Stores decimal value` `      ``int` `decVal = hexDec(convertedHex);`   `      ``// Replace array element` `      ``arr[i] = decVal;` `    ``}`   `    ``// Print the modified array` `    ``for` `(``int` `val : arr) {` `      ``System.out.print(val + ``" "``);` `    ``}` `  ``}`   `  ``// Driver Code` `  ``public` `static` `void` `main(String[] args)` `  ``{`   `    ``// Given array` `    ``int` `arr[] = { ``74``, ``91``, ``31``, ``122` `};`   `    ``// Given string` `    ``String S = ``"1AB"``;`   `    ``// Function call to modify` `    ``// array by given operations` `    ``convertArr(arr, S);` `  ``}` `}`   `// This code is contributed by Kingash.`

## Python3

 `# Python3 program for the above approach`   `# Function to convert a decimal number` `# to its equivalent hexadecimal number` `def` `decHex(n):` `    ``alpha ``=` `[``'A'``, ``'B'``, ``'C'``, ``'D'``, ``'E'``, ``'F'``]` `    ``ans ``=` `''` `    ``while` `n:` `        ``if` `n ``%` `16` `< ``10``:` `            ``ans ``+``=` `str``(n ``%` `16``)` `        ``else``:` `            ``ans ``+``=` `alpha[n ``%` `16` `-` `10``]` `        ``n ``/``/``=` `16`   `    ``ans ``=` `ans[::``-``1``]` `    ``return` `ans`   `# Function to convert hexadecimal number` `# to its equavalent decimal number` `def` `hexDec(convertedHex):`   `    ``# Stores characters with their` `    ``# respective hexadecimal values` `    ``mp ``=` `{``"A"``: ``10``, ``"B"``: ``11``, ``"C"``: ``12``, ` `           ``"D"``: ``13``, ``"E"``: ``14``, ``"F"``: ``15``}`   `    ``# Stores answer` `    ``ans ``=` `0` `    ``pos ``=` `0`   `    ``# Traverse the string` `    ``for` `i ``in` `convertedHex[::``-``1``]:`   `        ``# If digit` `        ``if` `i.isdigit():` `            ``ans ``+``=` `(``16``*``*``pos)``*``int``(i)`   `        ``# If character` `        ``else``:` `            ``ans ``+``=` `(``16``*``*``pos)``*``mp[i]` `        ``pos ``+``=` `1`   `    ``# Return the answer` `    ``return` `ans`   `# Function to move all the` `# alphabets to front` `def` `removeChars(hexaVal, S):` `    ``setk ``=` `set``()` `    ``for` `i ``in` `S:` `        ``setk.add(i)` `    ``ans ``=` `''` `    ``for` `i ``in` `hexaVal:` `        ``if` `i ``in` `setk:` `            ``continue` `        ``ans ``+``=` `i`   `    ``return` `ans`   `# Function to modify each array` `# element by removing characters` `# from their hexadecimal representation` `# which are present in a given string` `def` `convertArr(arr, S):`   `    ``# Traverse the array` `    ``for` `i ``in` `range``(``len``(arr)):`   `        ``# Stores hexadecimal value` `        ``hexaVal ``=` `decHex(arr[i])`   `        ``# Remove the characters from hexadecimal` `        ``# representation present in string S` `        ``convertedHex ``=` `removeChars(hexaVal, S)`   `        ``# Stores decimal value` `        ``decVal ``=` `hexDec(convertedHex)`   `        ``# Replace array element` `        ``arr[i] ``=` `decVal`   `    ``# Print the modified array` `    ``print``(arr)`     `# Driver Code` `# Given array` `arr ``=` `[``74``, ``91``, ``31``, ``122``]`   `# Given string` `S ``=` `"1AB"`   `# Function call to modify` `# array by given operations` `convertArr(arr, S)`

## C#

 `using` `System;` `using` `System.Linq;`   `class` `Program` `{` `  ``static` `void` `Main(``string``[] args)` `  ``{` `    `  `    ``// Given array` `    ``int``[] arr = { 74, 91, 31, 122 };` `    ``int` `N = arr.Length;`   `    ``// Given string` `    ``string` `S = ``"1AB"``;`   `    ``// Function call to modify` `    ``// array by given operations` `    ``ConvertArr(arr, N, S);`   `    ``Console.WriteLine();` `  ``}`   `  ``// Function to convert a decimal number` `  ``// to its equivalent hexadecimal number` `  ``static` `string` `DecHex(``int` `n)` `  ``{` `    ``char``[] alpha = { ``'A'``, ``'B'``, ``'C'``, ``'D'``, ``'E'``, ``'F'` `};` `    ``string` `ans = ``""``;` `    ``while` `(n > 0)` `    ``{` `      ``if` `(n % 16 < 10)` `      ``{` `        ``ans += n % 16;` `      ``}` `      ``else` `      ``{` `        ``ans += alpha[n % 16 - 10];` `      ``}` `      ``n /= 16;` `    ``}` `    ``return` `new` `string``(ans.Reverse().ToArray());` `  ``}`   `  ``// Function to convert hexadecimal number` `  ``// to its equavalent decimal number` `  ``static` `int` `HexDec(``string` `convertedHex)` `  ``{` `    ``// Stores characters with their` `    ``// respective hexadecimal values` `    ``char``[] mp = { ``'A'``, ``'B'``, ``'C'``, ``'D'``, ``'E'``, ``'F'` `};`   `    ``// Stores answer` `    ``int` `ans = 0;` `    ``int` `pos = 0;`   `    ``// Traverse the string` `    ``char``[] reversed = convertedHex.Reverse().ToArray();` `    ``foreach` `(``char` `ch ``in` `reversed)` `    ``{` `      ``// If digit` `      ``if` `(``char``.IsDigit(ch))` `      ``{` `        ``ans += (``int``)Math.Pow(16, pos) * (ch - ``'0'``);` `      ``}` `      ``// If character` `      ``else` `      ``{` `        ``ans += (``int``)Math.Pow(16, pos) * Array.IndexOf(mp, ch);` `      ``}` `      ``pos += 1;` `    ``}` `    ``// Return the answer` `    ``return` `ans;` `  ``}`   `  ``// Function to move all the` `  ``// alphabets to front` `  ``static` `string` `RemoveChars(``string` `hexaVal, ``string` `S)` `  ``{` `    ``char``[] setk = S.ToCharArray();` `    ``string` `ans = ``""``;` `    ``foreach` `(``char` `ch ``in` `hexaVal)` `    ``{` `      ``if` `(setk.Contains(ch))` `      ``{` `        ``continue``;` `      ``}` `      ``ans += ch;` `    ``}` `    ``return` `ans;` `  ``}`   `  ``// Function to modify each array` `  ``// element by removing characters` `  ``// from their hexadecimal representation` `  ``// which are present in a given string` `  ``static` `void` `ConvertArr(``int``[] arr, ``int` `N, ``string` `S)` `  ``{` `    `  `    ``// Traverse the array` `    ``for` `(``int` `i = 0; i < N; i++)` `    ``{` `      ``// Stores hexadecimal value` `      ``string` `hexaVal = DecHex(arr[i]);`   `      ``// Remove the characters from hexadecimal` `      ``// representation present in string S` `      ``string` `convertedHex = RemoveChars(hexaVal, S);`     `      ``// Stores decimal value` `      ``int` `decVal = HexDec(convertedHex);`   `      ``// Replace array element` `      ``arr[i] = decVal;` `    ``}`   `    ``// Print the modified array` `    ``for` `(``int` `i = 0; i < N; i++) {` `      ``Console.Write(arr[i] + ``" "``);` `    ``}`   `  ``}` `}`   `// This code is contributed by phasing17.`

## Javascript

 ``

Output:

`[4, 5, 15, 7]`

Time Complexity: O(N * |S|)
Auxiliary Space: O(|S|)

My Personal Notes arrow_drop_up
Related Articles