Dada una string S de tamaño N , la tarea es ordenar la string según sus valores ASCII .
Ejemplos:
Entrada: S = “Geeks7”
Salida: 7Geeks
Explicación: Según los valores ASCII, los números enteros van primero, luego las letras mayúsculas y minúsculas.Entrada: S = «GeeksForGeeks»
Salida: FGGeeeekkorss
Enfoque: la idea para resolver este problema es mantener una array para almacenar la frecuencia de cada carácter y luego agregarlos en consecuencia en la string resultante. Dado que hay un máximo de 256 caracteres, lo que hace que la complejidad del espacio sea constante. Siga los pasos a continuación para resolver este problema:
- Inicialice un vector freq[] de tamaño 256 con valores 0 para almacenar la frecuencia de cada carácter de la string.
- Itere sobre el rango [0, N) usando la variable i y aumente el conteo de s[i] en la array freq[] en 1 .
- Haz que la string S sea una string vacía.
- Iterar sobre el rango [0, N) usando la variable i e iterar sobre el rango [0, freq[i]) usando la variable j y agregando el carácter correspondiente al i-ésimo valor ASCII en la string s[].
- Después de realizar los pasos anteriores, imprima la string S como resultado.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std; // Function to sort the string based // on their ASCII values void sortString(string s) { int N = s.length(); // Stores the frequency of each // character of the string vector<int> freq(256, 0); // Count and store the frequency for (int i = 0; i < N; i++) { freq[s[i]]++; } s = ""; // Store the result for (int i = 0; i < 256; i++) { for (int j = 0; j < freq[i]; j++) s = s + (char)i; } // Print the result cout << s << "\n"; return; } // Driver Code int main() { string S = "GeeksForGeeks"; sortString(S); return 0; }
Java
// java program for the above approach import java.util.*; class Main { // Function to sort the string based // on their ASCII values static void sortString(String s) { int N = s.length(); // Stores the frequency of each // character of the string int [] freq = new int [256]; for(int i = 0; i < 256; i++){ freq[i] = 0; } // Count and store the frequency for (int i = 0; i < N; i++) { char character = s.charAt(i); int val = (int) character; freq[val]++; } // Store the result for (int i = 0; i < 256; i++) { for (int j = 0; j < freq[i]; j++) // s = s + (char)i; System.out.print((char)i); } } // Driver Code public static void main(String [] args) { String S = "GeeksForGeeks"; sortString(S); } } // This code is contributed by amreshkumar3.
Python3
# Python Program to implement # the above approach # Function to sort the string based # on their ASCII values def sortString(s): N = len(s) # Stores the frequency of each # character of the string freq = [0] * 256 # Count and store the frequency for i in range(0, N) : freq[ord(s[i])] += 1 s = "" # Store the result for i in range(256): for j in range(freq[i]): s = s + chr(i) # Print the result print(s) return # Driver Code S = "GeeksForGeeks" sortString(S) # This code is contributed by gfgking.
C#
// C# implementation for the above approach using System; class GFG { // Function to sort the string based // on their ASCII values static void sortString(string s) { int N = s.Length; // Stores the frequency of each // character of the string int [] freq = new int[256]; for(int i = 0; i < 256; i++){ freq[i] = 0; } // Count and store the frequency for (int i = 0; i < N; i++) { char character = s[i]; int val = (int) character; freq[val]++; } // Store the result for (int i = 0; i < 256; i++) { for (int j = 0; j < freq[i]; j++) // s = s + (char)i; Console.Write((char)i); } } // Driver Code public static void Main() { string S = "GeeksForGeeks"; sortString(S); } } // This code is contributed by sanjoy_62.
Javascript
<script> // JavaScript Program to implement // the above approach // Function to sort the string based // on their ASCII values function sortString(s) { let N = s.length; // Stores the frequency of each // character of the string let freq = new Array(256).fill(0) // Count and store the frequency for (let i = 0; i < N; i++) { freq[s[i].charCodeAt(0)]++; } s = ""; // Store the result for (let i = 0; i < 256; i++) { for (let j = 0; j < freq[i]; j++) s = s + String.fromCharCode(i); } // Print the result document.write(s); return; } // Driver Code let S = "GeeksForGeeks"; sortString(S); // This code is contributed by Potta Lokesh </script>
FGGeeeekkorss
Complejidad de Tiempo: O(256*N)
Espacio Auxiliar: O(256)
Enfoque alternativo: el problema dado también se puede resolver usando la función de comparación con la función sort() incorporada para ordenar la string dada según sus valores ASCII.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include "bits/stdc++.h" using namespace std; // Comparator Function to sort the given // string in increasing order of their // ASCII value bool cmp(char ch, char chh) { return int(ch) <= int(chh); } // Function to sort the string based // on their ASCII values string sortString(string S) { // Sort the string S sort(S.begin(), S.end(), cmp); return S; } // Driver Code int main() { string S = "GeeksForGeeks"; cout << sortString(S); return 0; }
Python3
S = "GeeksForGeeks" #Sorted is a in-built pyhton function to sort and #using join we can create the new sorted string string = ''.join(sorted(S)) print(string) # This code is contributed by Susobhan Akhuli
Javascript
// JS program for the above approach // Function to sort the string based // on their ASCII values function sortString(S) { // Sort the string S arr = S.split(""); arr.sort(); return arr.join(""); } // Driver Code var S = "GeeksForGeeks"; // Function Call console.log(sortString(S)); // This code is contributed by phasing17
FGGeeeekkorss
Complejidad de tiempo: O(N*log N)
Espacio auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por vishnuthulasidosss y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA