计算字符串中所有数字的总和
给定一个包含字母数字字符的字符串,计算字符串中所有数字的总和。
例子:
Input: 1abc23
Output: 24
Input: geeks4geeks
Output: 4
Input: 1abc2x30yz67
Output: 100
Input: 123abc
Output: 123
难度级别:新手
这个问题中唯一棘手的部分是多个连续数字被视为一个数字。
这个想法很简单。我们扫描输入字符串的每个字符,如果一个数字由字符串的连续字符组成,我们将结果增加该数量。
下面是上述思想的实现:
C++
// C++ program to calculate sum of all numbers present
// in a string containing alphanumeric characters
#include
using namespace std;
// Function to calculate sum of all numbers present
// in a string containing alphanumeric characters
int findSum(string str)
{
// A temporary string
string temp = "";
// holds sum of all numbers present in the string
int sum = 0;
// read each character in input string
for (char ch : str) {
// if current character is a digit
if (isdigit(ch))
temp += ch;
// if current character is an alphabet
else {
// increment sum by number found earlier
// (if any)
sum += atoi(temp.c_str());
// reset temporary string to empty
temp = "";
}
}
// atoi(temp.c_str()) takes care of trailing
// numbers
return sum + atoi(temp.c_str());
}
// Driver code
int main()
{
// input alphanumeric string
string str = "12abc20yz68";
// Function call
cout << findSum(str);
return 0;
}
Java
// Java program to calculate sum of all numbers present
// in a string containing alphanumeric characters
class GFG {
// Function to calculate sum of all numbers present
// in a string containing alphanumeric characters
static int findSum(String str)
{
// A temporary string
String temp = "0";
// holds sum of all numbers present in the string
int sum = 0;
// read each character in input string
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
// if current character is a digit
if (Character.isDigit(ch))
temp += ch;
// if current character is an alphabet
else {
// increment sum by number found earlier
// (if any)
sum += Integer.parseInt(temp);
// reset temporary string to empty
temp = "0";
}
}
// atoi(temp.c_str()) takes care of trailing
// numbers
return sum + Integer.parseInt(temp);
}
// Driver code
public static void main(String[] args)
{
// input alphanumeric string
String str = "12abc20yz68";
// Function call
System.out.println(findSum(str));
}
}
// This code is contributed by AnkitRai01
Python3
# Python3 program to calculate sum of
# all numbers present in a string
# containing alphanumeric characters
# Function to calculate sum of all
# numbers present in a string
# containing alphanumeric characters
def findSum(str1):
# A temporary string
temp = "0"
# holds sum of all numbers
# present in the string
Sum = 0
# read each character in input string
for ch in str1:
# if current character is a digit
if (ch.isdigit()):
temp += ch
# if current character is an alphabet
else:
# increment Sum by number found
# earlier(if any)
Sum += int(temp)
# reset temporary string to empty
temp = "0"
# atoi(temp.c_str1()) takes care
# of trailing numbers
return Sum + int(temp)
# Driver code
# input alphanumeric string
str1 = "12abc20yz68"
# Function call
print(findSum(str1))
# This code is contributed
# by mohit kumar
C#
// C# program to calculate sum of
// all numbers present in a string
// containing alphanumeric characters
using System;
class GFG {
// Function to calculate sum of
// all numbers present in a string
// containing alphanumeric characters
static int findSum(String str)
{
// A temporary string
String temp = "0";
// holds sum of all numbers
// present in the string
int sum = 0;
// read each character in input string
for (int i = 0; i < str.Length; i++) {
char ch = str[i];
// if current character is a digit
if (char.IsDigit(ch))
temp += ch;
// if current character is an alphabet
else {
// increment sum by number found earlier
// (if any)
sum += int.Parse(temp);
// reset temporary string to empty
temp = "0";
}
}
// atoi(temp.c_str()) takes care of trailing
// numbers
return sum + int.Parse(temp);
}
// Driver code
public static void Main(String[] args)
{
// input alphanumeric string
String str = "12abc20yz68";
// Function call
Console.WriteLine(findSum(str));
}
}
// This code is contributed by PrinciRaj1992
Javascript
Python3
# Python3 program to calculate sum of
# all numbers present in a string
# containing alphanumeric characters
# Function to calculate sum of all
# numbers present in a string
# containing alphanumeric characters
import re
def find_sum(str1):
# Regular Expression that matches
# digits in between a string
return sum(map(int, re.findall('\d+', str1)))
# Driver code
# input alphanumeric string
str1 = "12abc20yz68"
# Function call
print(find_sum(str1))
# This code is contributed
# by Venkata Ramana B
输出
100
时间复杂度: O(n) 其中 n 是字符串的长度。
实现正则表达式的更好解决方案。
Python3
# Python3 program to calculate sum of
# all numbers present in a string
# containing alphanumeric characters
# Function to calculate sum of all
# numbers present in a string
# containing alphanumeric characters
import re
def find_sum(str1):
# Regular Expression that matches
# digits in between a string
return sum(map(int, re.findall('\d+', str1)))
# Driver code
# input alphanumeric string
str1 = "12abc20yz68"
# Function call
print(find_sum(str1))
# This code is contributed
# by Venkata Ramana B
输出
100