Berechnen Sie die Summe aller in einer Zeichenfolge vorhandenen Zahlen

Berechnen Sie die Summe aller in einer Zeichenfolge vorhandenen Zahlen
Probieren Sie es bei GfG Practice aus #practiceLinkDiv { display: none !important; }

Gegeben eine Zeichenfolge S enthält alphanumerische Zeichen. Die Aufgabe besteht darin, die Summe aller in der Zeichenfolge vorhandenen Zahlen zu berechnen.

Beispiele:  

Eingang:  1abc23
Ausgabe: 24
Erläuterung: 1 + 23 = 24

Eingang:  geeks4geeks
Ausgabe: 4

Eingang:  1abc2x30yz67
Ausgabe: 100

Empfohlene Praxis Summe der Zahlen in der Zeichenfolge Probieren Sie es aus!

Ansatz:

Scannen Sie jedes Zeichen der Eingabezeichenfolge und erhöhen Sie die Zahl, wenn sie aus aufeinanderfolgenden Zeichen der Zeichenfolge besteht Ergebnis um diesen Betrag. Der einzig knifflige Teil dieser Frage besteht darin, dass mehrere aufeinanderfolgende Ziffern als eine Zahl betrachtet werden.

Befolgen Sie die folgenden Schritte, um die Idee umzusetzen:

  • Erstellen Sie eine leere Zeichenfolge Temp und eine ganze Zahl Summe .
  • Über alle Zeichen der Zeichenfolge iterieren.
    • Wenn es sich bei dem Zeichen um eine Ziffer handelt, fügen Sie diese hinzu Temp .
    • Andernfalls konvertieren Sie die temporäre Zeichenfolge in eine Zahl und fügen Sie sie hinzu Summe leer Temp .
  • Rückgabesumme + aus Temp erhaltene Zahl.

Nachfolgend finden Sie die Umsetzung des oben genannten Ansatzes:

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>   

Ausgabe
100 


Zeitkomplexität: O(N) wobei n die Länge der Zeichenfolge ist. 
Hilfsraum: O(N) wobei n die Länge der Zeichenfolge ist.

Berechnen Sie die Summe aller in einer Zeichenfolge vorhandenen Zahlen mit Rekursion

Die Idee besteht darin, die Zeichenfolge rekursiv zu durchlaufen und herauszufinden Zahlen Fügen Sie dann diese Zahlen hinzu Ergebnis endlich zurückgeben Ergebnis

Befolgen Sie die folgenden Schritte, um die Idee umzusetzen:

  • Erstellen Sie eine leere Zeichenfolge Temp und eine ganze Zahl Summe .
  • Durchlaufen Sie die Zeichen für jeden Index rekursiv ich aus Zu Länge - 1 .
    • Wenn i = N-1 Überprüfen Sie dann, ob das aktuelle Zeichen eine Ziffernrückgabe ist str[i] - '0' .
    • Sonst zurück .
    • Wenn str[i] ist eine Ziffer.
      • Führen Sie eine for-Schleife mit Zähler aus aus ich Zu N - 1 .
        • Wenn es sich bei dem Zeichen um eine Ziffer handelt, fügen Sie diese hinzu Temp .
        • Sonst kaputt.
      • Zurückkehren Summe des numerischen Werts von temp + recur für den Index J .

Nachfolgend finden Sie die Umsetzung des oben genannten Ansatzes:

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   

Ausgabe
100 

Zeitkomplexität: AN) wobei N die Größe der angegebenen Zeichenfolge ist.
Hilfsraum: AN) Im schlimmsten Fall kann es O(N) rekursive Aufrufe kosten

Berechnen Sie die Summe aller in einer Zeichenfolge vorhandenen Zahlen mit Regex in Python:

Die Idee ist, integrierte Funktionen zu verwenden Python RegEx . 

Nachfolgend finden Sie die Umsetzung des oben genannten Ansatzes:

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  ));      }   }   

Ausgabe
100 

Zeitkomplexität: O(n) wobei n die Länge der Zeichenfolge ist. 
Hilfsraum: O(n) wobei n die Länge der Zeichenfolge ist.