# Extract maximum numeric value from a given string | Set 1 (General approach)

Given an alphanumeric string, extract maximum numeric value from that string. Alphabets will only be in lower case.
One approach to solve the problem is discussed here, other using Regular expressions is given in Set 2
Examples:

Input : 100klh564abc365bg
Output : 564
Maximum numeric value among 100, 564
and 365 is 564.

Input : abchsd0sdhs
Output : 0

## Recommended: Please solve it on “PRACTICE” first, before moving on to the solution.

Its solution is simple i.e. Start traversing the string and perform two operations:

1. If a numeric value is present at the current index then convert it into an integer
num = num*10 + (str[i]-'0')
2. Otherwise update maximum value and reset num = 0.

Return the maximum value at the last.

## C++

 // C++ program to extract the maximum value #include using namespace std;    // Function to extract the maximum value int extractMaximum(string str) {     int num = 0, res = 0;        // Start traversing the given string     for (int i = 0; i= '0' && str[i] <= '9')             num = num * 10 + (str[i]-'0');            // Update maximum value         else         {             res = max(res, num);                // Reset the number             num = 0;         }     }        // Return maximum value     return max(res, num); }    // Driver program int main() {     string str = "100klh564abc365bg";     cout << extractMaximum(str);     return 0; }

## Java

 // Java program to extract the maximum value    class GFG  {     // Method to extract the maximum value     static int extractMaximum(String str)     {         int num = 0, res = 0;                 // Start traversing the given string         for (int i = 0; i

## Python3

 # Python 3 program to extract # the maximum value def extractMaximum(ss):     num, res = 0, 0            # start traversing the given string      for i in range(len(ss)):                    if ss[i] >= "0" and ss[i] <= "9":             num = num * 10 + int(int(ss[i]) - 0)         else:             res = max(res, num)             num = 0                return max(res, num)    # Driver Code ss = "100klh564abc365bg"    print(extractMaximum(ss))    # This code is contributed # by mohit kumar 29

## C#

 // C# program to extract the maximum value using System;    class GFG {            // Method to extract the maximum value     static int extractMaximum(String str)     {         int num = 0, res = 0;                // Start traversing the given string         for (int i = 0; i < str.Length; i++)         {                            // If a numeric value comes, start              // converting it into an integer              // till there are consecutive             // numeric digits             if (char.IsDigit(str[i]))                 num = num * 10 + (str[i]-'0');                    // Update maximum value             else             {                 res = Math.Max(res, num);                        // Reset the number                 num = 0;             }         }                // Return maximum value         return Math.Max(res, num);     }            // Driver method     public static void Main()      {         String str = "100klh564abc365bg";                    Console.Write(extractMaximum(str));     }  }    // This code is contributed by nitin mittal.

## PHP

 = '0' && \$str[\$i] <= '9')             \$num = \$num * 10 + (\$str[\$i]-'0');            // Update maximum value         else         {             \$res = max(\$res, \$num);                // Reset the number             \$num = 0;         }     }        // Return maximum value     return max(\$res, \$num); }        // Driver Code     \$str = "100klh564abc365bg";     echo extractMaximum(\$str);    // This code is contributed by nitin mittal. ?>

Output:

564

But in the case of large numbers above program wouldn’t work because of integer range in C and C++. So, to handle the case of large numbers we have to take each numeric value as separate string and then find maximum value.

1) Start traversing the given string.
Continue traversing if there are any
leading zeroes or any lowercase character.
b) Form a string of integer values.
c) Update the maximum string.
i) If the maximum string and current
string are having equal lengths then
on the basis of the first unmatched
value return maximum string.
ii) If both are having different lengths
then return the string with greater
length.

2) Return maximum string.

## C++

 // C++ program for above implementation #include using namespace std;    // Utility function to find maximum string string maximumNum(string curr_num, string res) {     int len1 = curr_num.length();     int len2 = res.length();        // If both having equal lengths     if (len1 == len2)     {         // Reach first unmatched character / value         int i = 0;         while (curr_num[i]== res[i])             i++;            // Return string with maximum value         if (curr_num[i] < res[i])             return res;         else             return curr_num;     }        // If different lengths     // return string with maximum length     return len1 < len2 ? res: curr_num; }    // Function to extract the maximum value string extractMaximum(string str) {     int n = str.length();     string curr_num ="";     string res;        // Start traversing the string     for (int i = 0; i='0' && str[i]<='9')         {             curr_num = curr_num + str[i];             i++;         }            if (i == n)             break;            if (curr_num.size() > 0)             i--;            // Update maximum string         res = maximumNum(curr_num, res);            curr_num = "";     }        // To handle the case if there is only     // 0 numeric value     if (curr_num.size()== 0 && res.size()== 0)         res = res + '0';        // Return maximum string     return maximumNum(curr_num, res); }    // Drivers program int main() {     string str ="100klh564abc365bg";     cout << extractMaximum(str) << endl;     return 0; }

## Java

 // Java program for above implementation    class GFG  {     // Utility method to find maximum string     static String maximumNum(String curr_num, String res)     {         int len1 = curr_num.length();         int len2 = res.length();                 // If both having equal lengths         if (len1 == len2)         {             // Reach first unmatched character / value             int i = 0;             while (curr_num.charAt(i) == res.charAt(i))                 i++;                     // Return string with maximum value             if (curr_num.charAt(i) < res.charAt(i))                 return res;             else                 return curr_num;         }                 // If different lengths         // return string with maximum length         return len1 < len2 ? res: curr_num;     }             // Method to extract the maximum value     static String extractMaximum(String str)     {         int n = str.length();         String curr_num ="";         String res="";                 // Start traversing the string         for (int i = 0; i 0)                 i--;                     // Update maximum string             res = maximumNum(curr_num, res);                     curr_num = "";         }                 // To handle the case if there is only         // 0 numeric value         if (curr_num.length() == 0 && res.length() == 0)             res = res + '0';                 // Return maximum string         return maximumNum(curr_num, res);     }            // Driver method     public static void main(String[] args)      {         String str = "100klh564abc365bg";         System.out.println(extractMaximum(str));     }     }

## Python3

 # Python3 program for above implementation    # Utility function to find maximum string def maximumNum(curr_num, res):        len1 = len(curr_num);     len2 = len(res);        # If both having equal lengths     if (len1 == len2):                    # Reach first unmatched character / value         i = 0;         while (curr_num[i]== res[i]):             i += 1;            # Return string with maximum value         if (curr_num[i] < res[i]):             return res;         else:             return curr_num;        # If different lengths     # return string with maximum length     return res if(len1 < len2) else curr_num;    # Function to extract the maximum value def extractMaximum(str):        n = len(str);     curr_num = "";     res = "";        # Start traversing the string     for i in range(n):                    # Ignore leading zeroes         while (i < n and str[i]=='0'):             i += 1;            # Store numeric value into a string         while (i < n and str[i] >= '0' and                           str[i] <= '9'):             curr_num += str[i];             i += 1;            if (i == n):             break;            if (len(curr_num) > 0):             i -= 1;            # Update maximum string         res = maximumNum(curr_num, res);            curr_num = "";        # To handle the case if there is only     # 0 numeric value     if (len(curr_num) == 0 and len(res) == 0):         res += '0';        # Return maximum string     return maximumNum(curr_num, res);    # Driver Code str ="100klh564abc365bg"; print(extractMaximum(str));        # This code is contributed by mits

## C#

 // C# program for above implementation  using System; class GFG  {      // Utility method to find maximum string      static String maximumNum(string curr_num, string res)      {          int len1 = curr_num.Length;          int len2 = res.Length;                 // If both having equal lengths          if (len1 == len2)          {              // Reach first unmatched character / value              int i = 0;              while (curr_num[i] == res[i])                  i++;                     // Return string with maximum value              if (curr_num[i] < res[i])                  return res;              else                 return curr_num;          }                 // If different lengths          // return string with maximum length          return len1 < len2 ? res: curr_num;      }             // Method to extract the maximum value      static string extractMaximum(string str)      {          int n = str.Length;          string curr_num ="";          string res="";                 // Start traversing the string          for (int i = 0; i 0)                  i--;                     // Update maximum string              res = maximumNum(curr_num, res);                     curr_num = "";          }                 // To handle the case if there is only          // 0 numeric value          if (curr_num.Length == 0 && res.Length == 0)              res = res + '0';                 // Return maximum string          return maximumNum(curr_num, res);      }             // Driver method      public static void Main()      {          string str = "100klh564abc365bg";          Console.WriteLine(extractMaximum(str));      }      }  // This code is contributed by mits

## PHP

 ='0' && \$str[\$i]<='9')         {             \$curr_num .= \$str[\$i];             \$i++;         }            if (\$i == \$n)             break;            if (strlen(\$curr_num) > 0)             \$i--;            // Update maximum string         \$res = maximumNum(\$curr_num, \$res);            \$curr_num = "";     }        // To handle the case if there is only     // 0 numeric value     if (strlen(\$curr_num)== 0 && strlen(\$res)== 0)         \$res .= '0';        // Return maximum string     return maximumNum(\$curr_num, \$res); }    // Drivers program        \$str ="100klh564abc365bg";     echo extractMaximum(\$str);        // this code is contributed by mits ?>

Output:

564

This article is contributed by Sahil Chhabra. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details

My Personal Notes arrow_drop_up