📌  相关文章
📜  计算字符串中所有数字的总和

📅  最后修改于: 2022-05-13 01:57:07.257000             🧑  作者: Mango

计算字符串中所有数字的总和

给定一个包含字母数字字符的字符串,计算字符串中所有数字的总和。

例子:

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