#practiceLinkDiv { display: none !important; }Даден е низ С съдържащ буквено-цифрови знаци Задачата е да се изчисли сумата от всички числа, присъстващи в низа.
Примери:
Препоръчителна практика Сума от числа в низ Опитайте!вход: 1abc23
Изход: 24
Обяснение: 1 + 23 = 24вход: geeks4geeks
Изход: 4вход: 1abc2x30yz67
Изход: 100
Подход:
Сканирайте всеки знак от въведения низ и ако числото е образувано от последователни знаци от низа, увеличете резултат с тази сума. Единствената трудна част от този въпрос е, че множество последователни цифри се считат за едно число.
Следвайте стъпките по-долу, за да реализирате идеята:
- Създайте празен низ темп и цяло число сума .
- Обхождане на всички знаци от низа.
- Ако знакът е цифрова цифра, добавете го към темп .
- В противен случай преобразувайте временния низ в число и го добавете към сума празен темп .
- Връща сума + число, получено от темп.
По-долу е изпълнението на горния подход:
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 import java.io.*; 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 <script> // Javascript 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 function findSum(str) { // A temporary string let temp = '0'; // holds sum of all numbers // present in the string let sum = 0; // read each character in input string for (let i = 0; i < str.length; i++) { let ch = str[i]; // if current character is a digit if (!isNaN(String(ch) * 1)) temp += ch; // if current character is an alphabet else { // increment sum by number found earlier // (if any) sum += parseInt(temp); // reset temporary string to empty temp = '0'; } } // atoi(temp.c_str()) takes care of trailing // numbers return sum + parseInt(temp); } // Driver code // input alphanumeric string let str = '12abc20yz68'; // Function call document.write(findSum(str)); // This code is contributed by unknown2108 </script>
Изход
100
Времева сложност: O(N), където n е дължината на низа.
Помощно пространство: O(N), където n е дължината на низа.
Изчислете сумата на всички числа, присъстващи в низ, като използвате рекурсия
Идеята е да преминете рекурсивно през низа и да откриете числа след това добавете тези числа към резултат най-сетне върнете резултат .
Следвайте стъпките по-долу, за да реализирате идеята:
- Създайте празен низ темп и цяло число сума .
- Рекурсивно преминаване през знаците за всеки индекс i от към дължина - 1 .
- Ако i = N-1 след това проверете дали текущият знак е връщане на цифра str[i] - '0' .
- Иначе връщане .
- Ако стр[и] е цифра.
- Изпълнете for цикъл с брояч й от i към N - 1 .
- Ако знакът е цифрова цифра, добавете го към темп .
- Друга почивка.
- Връщане сума на числова стойност на temp + повторение за индекс й .
- Изпълнете for цикъл с брояч й от i към N - 1 .
По-долу е изпълнението на горния подход:
C++// C++ program to calculate sum of all numbers // present in a string containing alphanumeric // characters #include using namespace std; int solve(string& str int i int n) { // if string is empty if (i >= n) return 0; // if on the last index if (i == n - 1) { // if last digit is numeric if (isdigit(str[i])) { return str[i] - '0'; } else { return 0; } } // if current char is digit // then sum the consecutive digits if (isdigit(str[i])) { // declared an empty string string temp = ''; int j; // start from that index // sum all the consecutive digits for (j = i; j < n; j++) { // if current char is digit // add it to the temp string if (isdigit(str[j])) temp += str[j]; // if it is not a digit // break instantly else break; } // add the number associated to temp // with the answer recursion will bring return stoi(temp) + solve(str j n); } // else call from the next index else { solve(str i + 1 n); } } int findSum(string str) { // recursiven function return solve(str 0 str.size()); } // Driver code int main() { // input alphanumeric string string str = '12abc20yz68'; // Function call cout << findSum(str); return 0; }
Java import java.util.Scanner; class Main { static int solve(String str int i int n) { // if string is empty if (i >= n) return 0; // if on the last index if (i == n - 1) { // if last digit is numeric if (Character.isDigit(str.charAt(i))) { return str.charAt(i) - '0'; } else { return 0; } } // if current char is digit // then sum the consecutive digits if (Character.isDigit(str.charAt(i))) { // declared an empty string String temp = ''; int j; // start from that index // sum all the consecutive digits for (j = i; j < n; j++) { // if current char is digit // add it to the temp string if (Character.isDigit(str.charAt(j))) temp += str.charAt(j); // if it is not a digit // break instantly else break; } // add the number associated to temp // with the answer recursion will bring return Integer.parseInt(temp) + solve(str j n); } // else call from the next index else { return solve(str i + 1 n); } } static int findSum(String str) { // recursiven function return solve(str 0 str.length()); } // Driver code public static void main(String[] args) { // input alphanumeric string String str = '12abc20yz68'; // Function call System.out.println(findSum(str)); } } // This code contributed by Ajax
Python3 def findSum(str): # variable to store sum result = 0 temp = '' for i in range(len(str)): if str[i].isnumeric(): temp += str[i] if i == len(str) - 1: result += int(temp) else: if temp != '': result += int(temp) temp = '' return result # driver code if __name__ == '__main__': # input alphanumeric string str = '12abc20yz68' print(findSum(str)) #This code contributed by Shivam Tiwari
C# // C# program to calculate sum of all numbers // present in a string containing alphanumeric // characters using System; using System.Linq; using System.Collections.Generic; class GFG { static bool isdigit(char c) { if(c>='0' && c<='9') return true; return false; } static int solve(string str int i int n) { // if string is empty if (i >= n) return 0; // if on the last index if (i == n - 1) { // if last digit is numeric if (isdigit(str[i])) { return str[i]; } else { return 0; } } // if current char is digit // then sum the consecutive digits if (isdigit(str[i])) { // declared an empty string string temp = ''; int j; // start from that index // sum all the consecutive digits for (j = i; j < n; j++) { // if current char is digit // add it to the temp string if (isdigit(str[j])) temp += str[j]; // if it is not a digit // break instantly else break; } // add the number associated to temp // with the answer recursion will bring return Int32.Parse(temp) + solve(str j n); } // else call from the next index else { return solve(str i + 1 n); } } static int findSum(string str) { // recursiven function return solve(str 0 str.Length); } // Driver code static public void Main() { // input alphanumeric string string str = '12abc20yz68'; // Function call Console.Write(findSum(str)); } }
JavaScript function findSum(str) { // variable to store sum let result = 0; let temp = ''; for (let i = 0; i < str.length; i++) { if (!isNaN(str[i])) { temp += str[i]; if (i === str.length - 1) { result += parseInt(temp); } } else { if (temp !== '') { result += parseInt(temp); temp = ''; } } } return result; } // driver code console.log(findSum('12abc20yz68')); // This code is contributed by Shivam Tiwari
Изход
100
Времева сложност: O(N) където N е размерът на дадения низ.
Помощно пространство: O(N) в най-лошия случай може да струва O(N) рекурсивни повиквания
Изчислете сумата на всички числа, присъстващи в низ, като използвате Regex в Python:
Идеята е да се използва вградена функция Python RegEx .
По-долу е изпълнението на горния подход:
C++14#include #include // Function to calculate sum of all // numbers present in a string // containing alphanumeric characters int findSum(std::string str) { // Regular Expression that matches // digits in between a string std::regex pattern('\d+'); std::smatch match; int sum = 0; while (std::regex_search(str match pattern)) { sum += stoi(match[0].str()); str = match.suffix().str(); } return sum; } // Driver code int main() { // input alphanumeric string std::string str = '12abc20yz68'; // Function call std::cout << findSum(str) << std::endl; return 0; } // This code is contributed by Shivam Tiwari
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
JavaScript // JavaScript 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 function find_sum(str1) { // Regular Expression that matches // digits in between a string return str1.match(/d+/g).reduce((acc val) => acc + parseInt(val) 0); } // Driver code // input alphanumeric string const str1 = '12abc20yz68'; // Function call console.log(find_sum(str1));
Java import java.util.regex.*; public class Main { // Function to calculate sum of all // numbers present in a string // containing alphanumeric characters public static int findSum(String str) { // Regular Expression that matches // digits in between a string Pattern pattern = Pattern.compile('\d+'); Matcher matcher = pattern.matcher(str); int sum = 0; while (matcher.find()) { sum += Integer.parseInt(matcher.group()); str = matcher.replaceFirst(''); matcher = pattern.matcher(str); } return sum; } // Driver code public static void main(String[] args) { // input alphanumeric string String str = '12abc20yz68'; // Function call System.out.println(findSum(str)); } }
C# using System; using System.Text.RegularExpressions; public class GFG { // Function to calculate sum of all // numbers present in a string // containing alphanumeric characters public static int FindSum(string str) { // Regular Expression that matches // digits in between a string Regex pattern = new Regex(@'d+'); Match matcher = pattern.Match(str); int sum = 0; while (matcher.Success) { sum += Int32.Parse(matcher.Value); str = pattern.Replace(str '' 1 matcher.Index); matcher = pattern.Match(str); } return sum; } // Main method static public void Main() { // input alphanumeric string string str = '12abc20yz68'; // Function call Console.WriteLine(FindSum(str)); } }
Изход
100
Времева сложност: O(n), където n е дължината на низа.
Помощно пространство: O(n), където n е дължината на низа.