给定一个字母数字字符串,从该字符串中提取最大数值。字母表只能用小写字母。 这里讨论了一种解决问题的方法,另一种使用正则表达式的方法在中给出 第二组 例如:
null
Input : 100klh564abc365bg Output : 564 Maximum numeric value among 100, 564 and 365 is 564. Input : abchsd0sdhs Output : 0
其解决方案很简单,即开始遍历字符串并执行两个操作:
- 如果当前索引中存在数值,则将其转换为整数
num = num*10 + (str[i]-'0')
- 否则,更新最大值并重置num=0。
返回最后一个值的最大值。
C++
// C++ program to extract the maximum value #include<bits/stdc++.h> 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<str.length(); i++) { // If a numeric value comes, start converting // it into an integer till there are consecutive // numeric digits if (str[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<str.length(); i++) { // If a numeric value comes, start converting // it into an integer till there are consecutive // numeric digits if (Character.isDigit(str.charAt(i))) num = num * 10 + (str.charAt(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[] args) { String str = "100klh564abc365bg" ; System.out.println(extractMaximum(str)); } } |
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
<?php // PHP program to extract the maximum value // Function to extract the maximum value function extractMaximum( $str ) { $num = 0; $res = 0; // Start traversing the given string for ( $i = 0; $i < strlen ( $str ); $i ++) { // If a numeric value comes, // start converting it into // an integer till there are // consecutive numeric digits if ( $str [ $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 Code $str = "100klh564abc365bg" ; echo extractMaximum( $str ); // This code is contributed by nitin mittal. ?> |
Javascript
<script> // JavaScript program to extract // the maximum value // Method to extract the maximum value function extractMaximum(str) { var num = 0, res = 0; // Start traversing the given string for (i = 0; i<str.length; i++) { // If a numeric value comes, // start converting // it into an integer till // there are consecutive // numeric digits if (isDigit(str.charAt(i))) num = num * 10 + (str.charAt(i).charCodeAt(0)- '0' .charCodeAt(0)); // Update maximum value else { res = Math.max(res, num); // Reset the number num = 0; } } // Return maximum value return Math.max(res, num); } function isDigit(c) { return c >= '0' && c <= '9' ; } // Driver method var str = "100klh564abc365bg" ; document.write(extractMaximum(str)); // This code is contributed by Amit Katiyar </script> |
输出:
564
但是,在大数的情况下,由于C和C++中的整数范围,程序不能工作。所以,为了处理大数的情况,我们必须将每个数值作为一个单独的字符串,然后找到最大值。
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<bits/stdc++.h> 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<n; i++) { // Ignore leading zeroes while (i<n && str[i]== '0' ) i++; // Store numeric value into a string while (i<n && str[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<n; i++) { // Ignore leading zeroes while (i<n && str.charAt(i)== '0' ) i++; // Store numeric value into a string while (i<n && Character.isDigit(str.charAt(i))) { curr_num = curr_num + str.charAt(i); i++; } if (i == n) break ; if (curr_num.length() > 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<n; i++) { // Ignore leading zeroes while (i<n && str[i]== '0' ) i++; // Store numeric value into a string while (i<n && Char.IsDigit(str[i])) { curr_num = curr_num + str[i]; i++; } if (i == n) break ; if (curr_num.Length > 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
<?php // PHP program for above implementation // Utility function to find maximum string function maximumNum( $curr_num , $res ) { $len1 = strlen ( $curr_num ); $len2 = strlen ( $res ); // If both having equal lengths if ( $len1 == $len2 ) { // Reach first unmatched character / value $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 function extractMaximum( $str ) { $n = strlen ( $str ); $curr_num = "" ; $res = "" ; // Start traversing the string for ( $i = 0; $i < $n ; $i ++) { // Ignore leading zeroes while ( $i < $n && $str [ $i ]== '0' ) $i ++; // Store numeric value into a string while ( $i < $n && $str [ $i ]>= '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 ?> |
Javascript
<script> // JavaScript program for above implementation // Utility method to find maximum string function maximumNum(curr_num,res) { let len1 = curr_num.length; let len2 = res.length; // If both having equal lengths if (len1 == len2) { // Reach first unmatched character / value let 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 function extractMaximum(str) { let n = str.length; let curr_num = "" ; let res= "" ; // Start traversing the string for (let i = 0; i<n; i++) { // Ignore leading zeroes while (i<n && str[i]== '0' ) i++; // Store numeric value into a string while (i<n && !isNaN(String(str[i]) * 1)) { curr_num = curr_num + str[i]; i++; } if (i == n) break ; if (curr_num.length > 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 let str = "100klh564abc365bg" ; document.write(extractMaximum(str)); // This code is contributed by unknown2108 </script> |
输出:
564
本文由 萨希尔·查布拉 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END