Convertir una array de strings en enteros en C/C++

Dada una string str que contiene números separados con “, “. La tarea es convertirlo en una array de enteros y encontrar la suma de esa array.

Ejemplos:

Input : str  = "2, 6, 3, 14"
Output : arr[] = {2, 6, 3, 14}
Sum of the array is = 2 + 6 + 3 + 14 = 25

Input : str = "125, 4, 24, 5543, 111"
Output : arr[] = {125, 4, 24, 5543, 111} 

Acercarse:

  • Cree una array vacía con tamaño como longitud de string e inicialice todos los elementos de la array a cero.
  • Comience a atravesar la cuerda.
  • Compruebe si el carácter en el índice actual de la string es una coma (,). En caso afirmativo, incremente el índice de la array para apuntar al siguiente elemento de la array.
  • De lo contrario, siga recorriendo la string hasta que se encuentre un operador ‘,’ y siga convirtiendo los caracteres en números y almacénelos en el elemento de array actual.
    Para convertir caracteres a número:

    array[j] = array[j] * 10 + (Str[i] – 48)

A continuación se muestra la implementación de la idea anterior:

// C++ program to convert a string to
// integer array
#include <bits/stdc++.h>
using namespace std;
  
// Function to convert a string to
// integer array
void convertStrtoArr(string str)
{
    // get length of string str
    int str_length = str.length();
  
    // create an array with size as string
    // length and initialize with 0
    int arr[str_length] = { 0 };
  
    int j = 0, i, sum = 0;
  
    // Traverse the string
    for (i = 0; str[i] != '\0'; i++) {
  
        // if str[i] is ', ' then split
        if (str[i] == ',')
            continue;
         if (str[i] == ' '){
            // Increment j to point to next
            // array location
            j++;
        }
        else {
  
            // subtract str[i] by 48 to convert it to int
            // Generate number by multiplying 10 and adding
            // (int)(str[i])
            arr[j] = arr[j] * 10 + (str[i] - 48);
        }
    }
  
    cout << "arr[] = ";
    for (i = 0; i <= j; i++) {
        cout << arr[i] << " ";
        sum += arr[i]; // sum of array
    }
  
    // print sum of array
    cout << "\nSum of array is = " << sum << endl;
}
  
// Driver code
int main()
{
    string str = "2, 6, 3, 14";
  
    convertStrtoArr(str);
  
    return 0;
}
Producción:

arr[] = 2 6 3 14 
Sum of array is = 25

Complejidad de tiempo: O(N), donde N es la longitud de la string.

Publicación traducida automáticamente

Artículo escrito por Rajput-Ji 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 *