Ordene una array de strings en orden creciente de suma de valores ASCII de caracteres

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:

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>
Producción: 

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *