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.