在C/C中将字符串转换为整数数组++

给一根绳子 str 包含以“,”分隔的数字。任务是将其转换为整数数组,并找到该数组的和。

null

例如:

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} 

方法:

  • 创建一个大小为字符串长度的空数组,并将数组的所有元素初始化为零。
  • 开始遍历字符串。
  • 检查字符串中当前索引处的字符是否为逗号(,)。如果是,则增加数组的索引以指向数组的下一个元素。
  • 否则,继续遍历字符串,直到找到“,”运算符,并继续将字符转换为数字并存储在当前数组元素中。 要将字符转换为数字:

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

以下是上述理念的实施情况:

// 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] != ' ' ; 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 << "Sum of array is = " << sum << endl;
}
// Driver code
int main()
{
string str = "2, 6, 3, 14" ;
convertStrtoArr(str);
return 0;
}


输出:

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

时间复杂性: O(N),其中N是字符串的长度。

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享