Sunday, November 17, 2024
Google search engine
HomeData Modelling & AIConvert a String to Integer Array in C/C++

Convert a String to Integer Array in C/C++

Given a string str containing numbers separated with “, “. The task is to convert it into an integer array and find the sum of that array. Examples:

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} 

Approach:

  • Create an empty array with size as string length and initialize all of the elements of array to zero.
  • Start traversing the string.
  • Check if the character at the current index in the string is a comma(,). If yes then, increment the index of the array to point to the next element of array.
  • Else, keep traversing the string until a ‘,’ operator is found and keep converting the characters to number and store at the current array element. To convert characters to number:

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

Below is the implementation of the above idea: 

CPP




// 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; i<str.length(); 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
    }
    cout<<endl;
    // print sum of array
    cout<<sum<<endl;
}
 
// Driver code
int main()
{
    string str = "2, 6, 3, 14";
 
    convertStrtoArr(str);
 
    return 0;
}


Output

arr[] 2 6 3 14 
25

Time Complexity: O(N), where N is the length of the string.
Auxiliary Space: O(N), Where N is the length of the string

Approach : Using Regular Expressions and Mapping

Below is the implementation of the above approach: 

C++




// C++ program of the above approach
 
#include <iostream>
#include <numeric>
#include <regex>
#include <vector>
 
std::pair<std::vector<int>, int>
convertAndSum(const std::string& str)
{
    std::vector<int> arr;
 
    // Extract all the numbers using regular
      // expressions
    std::regex pattern("\\d+");
    std::sregex_iterator it(str.begin(), str.end(),
                            pattern);
    std::sregex_iterator end;
 
    while (it != end) {
        // Convert the extracted number into an
        // integer and add it to the array
        arr.push_back(std::stoi(it->str()));
        ++it;
    }
 
    // Calculate the sum of the array
    int arraySum
        = std::accumulate(arr.begin(), arr.end(), 0);
 
    return { arr, arraySum };
}
 
// Driver Code
int main()
{
    std::string str = "2, 6, 3, 14";
    auto result = convertAndSum(str);
 
    std::cout << "arr[] = ";
    for (int num : result.first) {
        std::cout << num << " ";
    }
    std::cout << std::endl;
 
    std::cout << "Sum of array is = " << result.second
              << std::endl;
 
    return 0;
}


Output

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

Time Complexity: O(N), where N is the length of the input string.
Auxiliary Space: O(M), where M is the number of numbers in the input string.

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Recent Comments