Dada una string que contiene alfabetos en mayúsculas y dígitos enteros (del 0 al 9), la tarea es imprimir los alfabetos en el orden seguido por la suma de los dígitos.
Ejemplos:
Input : AC2BEW3 Output : ABCEW5 Alphabets in the lexicographic order followed by the sum of integers(2 and 3).
1- Comienza a recorrer la string dada.
a) Si aparece un alfabeto, incremente su
recuento de ocurrencias en una tabla hash.
b) Si sale un número entero, guárdelo por
separado sumando cada vez.
2- Usando hash_table agregue todos los
caracteres primero en una string y
luego, al final, agregue la
suma de enteros.
3- Devuelve la string resultante.
Implementación:
C++
// C++ program for above implementation #include<bits/stdc++.h> using namespace std; const int MAX_CHAR = 26; // Function to return string in lexicographic // order followed by integers sum string arrangeString(string str) { int char_count[MAX_CHAR] = {0}; int sum = 0; // Traverse the string for (int i = 0; i < str.length(); i++) { // Count occurrence of uppercase alphabets if (str[i]>='A' && str[i] <='Z') char_count[str[i]-'A']++; //Store sum of integers else sum = sum + (str[i]-'0'); } string res = ""; // Traverse for all characters A to Z for (int i = 0; i < MAX_CHAR; i++) { char ch = (char)('A'+i); // Append the current character // in the string no. of times it // occurs in the given string while (char_count[i]--) res = res + ch; } // Append the sum of integers if (sum > 0) res = res + to_string(sum); // return resultant string return res; } // Driver program int main() { string str = "ACCBA10D2EW30"; cout << arrangeString(str); return 0; }
Java
// Java program for above implementation class Test { static final int MAX_CHAR = 26; // Method to return string in lexicographic // order followed by integers sum static String arrangeString(String str) { int char_count[] = new int[MAX_CHAR]; int sum = 0; // Traverse the string for (int i = 0; i < str.length(); i++) { // Count occurrence of uppercase alphabets if (Character.isUpperCase(str.charAt(i))) char_count[str.charAt(i)-'A']++; //Store sum of integers else sum = sum + (str.charAt(i)-'0'); } String res = ""; // Traverse for all characters A to Z for (int i = 0; i < MAX_CHAR; i++) { char ch = (char)('A'+i); // Append the current character // in the string no. of times it // occurs in the given string while (char_count[i]-- != 0) res = res + ch; } // Append the sum of integers if (sum > 0) res = res + sum; // return resultant string return res; } // Driver method public static void main(String args[]) { String str = "ACCBA10D2EW30"; System.out.println(arrangeString(str)); } }
Python3
# Python3 program for above implementation MAX_CHAR = 26 # Function to return string in lexicographic # order followed by integers sum def arrangeString(string): char_count = [0] * MAX_CHAR s = 0 # Traverse the string for i in range(len(string)): # Count occurrence of uppercase alphabets if string[i] >= "A" and string[i] <= "Z": char_count[ord(string[i]) - ord("A")] += 1 # Store sum of integers else: s += ord(string[i]) - ord("0") res = "" # Traverse for all characters A to Z for i in range(MAX_CHAR): ch = chr(ord("A") + i) # Append the current character # in the string no. of times it # occurs in the given string while char_count[i]: res += ch char_count[i] -= 1 # Append the sum of integers if s > 0: res += str(s) # return resultant string return res # Driver code if __name__ == "__main__": string = "ACCBA10D2EW30" print(arrangeString(string)) # This code is contributed by # sanjeev2552
C#
// C# program for above implementation using System; class GFG { static int MAX_CHAR = 26; // Method to return string in lexicographic // order followed by integers sum static String arrangeString(string str) { int []char_count = new int[MAX_CHAR]; int sum = 0; // Traverse the string for (int i = 0; i < str.Length; i++) { // Count occurrence of uppercase // alphabets if (char.IsUpper(str[i])) char_count[str[i]-'A']++; //Store sum of integers else sum = sum + (str[i]-'0'); } string res = ""; // Traverse for all characters A to Z for (int i = 0; i < MAX_CHAR; i++) { char ch = (char)('A' + i); // Append the current character // in the string no. of times it // occurs in the given string while (char_count[i]-- != 0) res = res + ch; } // Append the sum of integers if (sum > 0) res = res + sum; // return resultant string return res; } // Driver method public static void Main() { string str = "ACCBA10D2EW30"; Console.Write(arrangeString(str)); } } // This code is contributed by nitin mittal.
PHP
<?php // PHP program for above implementation $MAX_CHAR = 26; // Function to return string in lexicographic // order followed by integers sum function arrangeString($str) { global $MAX_CHAR; $char_count = array_fill(0, $MAX_CHAR, NULL); $sum = 0; // Traverse the string for ($i = 0; $i < strlen($str); $i++) { // Count occurrence of uppercase alphabets if ($str[$i] >= 'A' && $str[$i] <= 'Z') $char_count[ord($str[$i]) - ord('A')]++; // Store sum of integers else $sum = $sum + (ord($str[$i]) - ord('0')); } $res = ""; // Traverse for all characters A to Z for ($i = 0; $i < $MAX_CHAR; $i++) { $ch = chr(ord('A') + $i); // Append the current character // in the string no. of times it // occurs in the given string while ($char_count[$i]--) $res = $res . $ch; } // Append the sum of integers if ($sum > 0) $res = $res . strval($sum); // return resultant string return $res; } // Driver Code $str = "ACCBA10D2EW30"; echo arrangeString($str); // This code is contributed by ita_c ?>
Javascript
<script> // Javascript program for above implementation let MAX_CHAR = 26; // Method to return string in lexicographic // order followed by integers sum function arrangeString(str) { let char_count = new Array(MAX_CHAR); for(let i=0;i<MAX_CHAR;i++) { char_count[i]=0; } let sum = 0; // Traverse the string for (let i = 0; i < str.length; i++) { // Count occurrence of uppercase alphabets if (str[i] >= "A" && str[i] <= "Z") char_count[str[i].charCodeAt(0)- 'A'.charCodeAt(0)]++; //Store sum of integers else sum = sum + (str[i].charCodeAt(0)- '0'.charCodeAt(0)); } let res = ""; // Traverse for all characters A to Z for (let i = 0; i < MAX_CHAR; i++) { let ch = String.fromCharCode('A'.charCodeAt(0)+i); // Append the current character // in the string no. of times it // occurs in the given string while (char_count[i]-- != 0) res = res + ch; } // Append the sum of integers if (sum > 0) res = res + sum; // return resultant string return res; } // Driver method let str = "ACCBA10D2EW30"; document.write(arrangeString(str)); // This code is contributed by avanitrachhadiya2155 </script>
AABCCDEW6
Complejidad temporal: O(n)
Espacio auxiliar: O(n)
Este artículo es una contribución de Aarti_Rathi y Sahil Chhabra . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA