Dada una array arr[] que consta de N strings , la tarea es ordenar las strings en orden creciente de la suma del valor ASCII de sus caracteres .
Ejemplos:
Entrada: arr[] = {“for”, “geeks”, “app”, “best”}
Salida: aplicación para los mejores geeks
Explicación:
la suma de los valores ASCII de los caracteres de cada string es: {327, 527, 321, 430 }.
Por lo tanto, el orden de clasificación de las strings es {“aplicación”, “para”, “mejor”, “geeks”}.Entrada: arr[] = {“geeksforgeeks”, “a”, “computer”, “science”, “portal”, “for”, “geeks”}
Salida: a for geeks portal science computer geeksforgeeks
Explicación:
Suma de valores ASCII de caracteres de cada string es: {1381, 97, 879, 730, 658, 327, 527}.
Por lo tanto, el orden de clasificación es {“a”, “for”, “geeks”, “portal”, “science”, “computer”, “geeksforgeeks”}.
Enfoque: La idea es utilizar una array auxiliar para almacenar pares de strings y su respectiva suma de valores ASCII de caracteres. Luego, ordene la array según el primer valor del par y luego imprima las strings ordenadas. Siga los pasos a continuación para resolver el problema:
- Inicialice un vector de pares , V[] para almacenar el valor de la string y la propia string como un par.
- Iterar sobre el rango [0, N – 1] usando la variable i :
- Encuentra la suma de los valores ASCII de los caracteres de arr[i] y guárdala en una variable, digamos val .
- Agregue el par {val, arr[i]} en V .
- Ordene el vector V sobre la base del primer valor del par .
- Iterar en el rango [0, n-1] en el vector V usando la variable i :
- Imprime las strings, es decir, v[i].segundo.
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 find the sum of ASCII // value of all characters of a string int getValue(string s) { // Store the required result int sum = 0; // Traverse the string for (int i = 0; i < s.size(); i++) { sum += s[i]; } // Return the sum return sum; } // Function to sort strings in increasing // order of sum of their ASCII values void sortStrings(string arr[], int n) { // Store pairs of strings and // sum of their ASCII values vector<pair<int, string> > v; // Traverse the array, arr[] for (int i = 0; i < n; i++) { // Find the value of the string int val = getValue(arr[i]); // Append pair {val, arr[i]} v.push_back({ val, arr[i] }); } // Sort the vector, V in increasing // order of the first value of pair sort(v.begin(), v.end()); // Print the sorted strings for (int i = 0; i < n; i++) { cout << v[i].second << " "; } } // Driver Code int main() { // Given Input string arr[] = { "geeks", "for", "app", "best" }; int n = 4; // Function Call sortStrings(arr, n); return 0; }
Python3
# Python3 program for the above approach # Function to find the sum of ASCII # value of all characters of a string def getValue(s): # Store the required result sum = 0 # Traverse the string for i in range(len(s)): sum += ord(s[i]) # Return the sum return sum # Function to sort strings in increasing # order of sum of their ASCII values def sortStrings(arr, n): # Store pairs of strings and # sum of their ASCII values v = [] # Traverse the array, arr[] for i in range(n): # Find the value of the string val = getValue(arr[i]) # Append pair {val, arr[i]} v.append([val, arr[i]]) # Sort the vector, V in increasing # order of the first value of pair v = sorted(v) # Print the sorted strings for i in range(n): print(v[i][1], end = " ") # Driver Code if __name__ == '__main__': # Given Input arr = [ "geeks", "for", "app", "best" ] n = 4 # Function Call sortStrings(arr, n) # This code is contributed by mohit kumar 29
C#
// C# program for the above approach using System; using System.Collections.Generic; class GFG{ // Function to find the sum of ASCII // value of all characters of a string static int getValue(String s) { // Store the required result int sum = 0; // Traverse the string for(int i = 0; i < s.Length; i++) { sum += s[i]; } // Return the sum return sum; } // Function to sort strings in increasing // order of sum of their ASCII values static void sortStrings(String[] arr, int n) { // Store pairs of strings and // sum of their ASCII values List<Tuple<int, String>> v = new List<Tuple<int, String>>(); // Traverse the array, arr[] for(int i = 0; i < n; i++) { // Find the value of the string int val = getValue(arr[i]); // Append pair {val, arr[i]} v.Add(new Tuple<int, String>(val, arr[i])); } // Sort the vector, V in increasing // order of the first value of pair v.Sort(); // Print the sorted strings for(int i = 0; i < n; i++) { Console.Write(v[i].Item2 + " "); } } // Driver Code static public void Main() { // Given Input String[] arr = { "geeks", "for", "app", "best" }; int n = 4; // Function Call sortStrings(arr, n); } } // This code is contributed by Dharanendra L V.
Javascript
<script> // JavaScript program for the above approach // Function to find the sum of ASCII // value of all characters of a string function getValue(s) { // Store the required result let sum = 0; // Traverse the string for (let i = 0; i < s.length; i++) { sum += s[i].charCodeAt(0); } // Return the sum return sum; } // Function to sort strings in increasing // order of sum of their ASCII values function sortStrings(arr, n) { // Store pairs of strings and // sum of their ASCII values let v = []; // Traverse the array, arr[] for (let i = 0; i < n; i++) { // Find the value of the string let val = getValue(arr[i]); // Append pair {val, arr[i]} v.push([ val, arr[i] ]); } // Sort the vector, V in increasing // order of the first value of pair v.sort(); // Print the sorted strings for (let i = 0; i < n; i++) { document.write(v[i][1] + " "); } } // Driver Code // Given Input let arr = ["geeks", "for", "app", "best" ]; let n = 4; // Function Call sortStrings(arr, n); </script>
app for best geeks
Complejidad de tiempo: O(N*log(N) + N*M), donde M es la longitud de la string más larga de la array arr[] .
Espacio Auxiliar: O(N)
Publicación traducida automáticamente
Artículo escrito por santhoshcharan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA