문자열에 있는 모든 숫자의 합을 계산합니다.
GfG Practice에서 사용해 보세요.
#practiceLinkDiv { 표시: 없음 !중요; }
산출
산출
산출
#practiceLinkDiv { 표시: 없음 !중요; } 문자열이 주어지면 에스 영숫자 문자 포함 이 작업은 문자열에 있는 모든 숫자의 합을 계산하는 것입니다.
예:
권장 실습 문자열의 숫자 합계 시도해 보세요!입력: 1abc23
산출: 24
설명: 1 + 23 = 24
입력: 괴짜4괴짜
산출: 4입력: 1abc2x30yz67
산출: 100
접근하다:
입력 문자열의 각 문자를 스캔하고 숫자가 문자열의 연속 문자로 구성된 경우 숫자를 증가시킵니다. 결과 그 금액만큼. 이 질문에서 유일하게 까다로운 부분은 여러 개의 연속된 숫자가 하나의 숫자로 간주된다는 것입니다.
아이디어를 구현하려면 아래 단계를 따르십시오.
- 빈 문자열 만들기 온도 그리고 정수 합집합 .
- 문자열의 모든 문자를 반복합니다.
- 문자가 숫자인 경우 추가 온도 .
- 그렇지 않으면 임시 문자열을 숫자로 변환하여 추가합니다. 합집합 비어 있는 온도 .
- temp에서 얻은 합계 + 숫자를 반환합니다.
다음은 위의 접근 방식을 구현한 것입니다.
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은 문자열의 길이입니다.
다음을 사용하여 문자열에 있는 모든 숫자의 합을 계산합니다. 재귀
아이디어는 문자열을 재귀적으로 탐색하여 다음을 찾는 것입니다. 숫자 그런 다음 이 숫자를 결과 마침내 반환 결과 .
아이디어를 구현하려면 아래 단계를 따르십시오.
- 빈 문자열 만들기 온도 그리고 정수 합집합 .
- 모든 인덱스의 문자를 재귀적으로 순회 나 ~에서 에게 길이 - 1 .
- 만약에 나는 = N-1 그런 다음 현재 문자가 숫자 반환인지 확인하십시오. str[i] - '0' .
- 그렇지 않으면 반환 .
- 만약에 str[i] 숫자입니다.
- 카운터를 사용하여 for 루프 실행 j ~에서 나 에게 N - 1 .
- 문자가 숫자인 경우 추가 온도 .
- 그렇지 않으면 휴식을 취하십시오.
- 반품 합집합 temp의 숫자 값 + 인덱스에 대해 반복됨 j .
- 카운터를 사용하여 for 루프 실행 j ~에서 나 에게 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
시간 복잡도: 에) 여기서 N은 주어진 문자열의 크기입니다.
보조 공간: 에) 최악의 경우 O(N) 재귀 호출 비용이 발생할 수 있습니다.
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은 문자열의 길이입니다.