给一根绳子 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