给定一个字符串形式的奇数,任务是从给定的数中生成最大的偶数,并且只允许执行一次交换操作。 例如:
null
Input : 1235785Output :1535782Swap 2 and 5.Input : 536425Output : 536524Swap 4 and 5 to make the largest even number.
- 在最后一个索引中找到小于或等于奇数的第一个偶数。
- 如果找到,则交换两个值。否则用字符串中的最后一个偶数值交换。
- 如果无法实现偶数,请打印给定的字符串。
C++
// C++ program for above implementation #include <bits/stdc++.h> using namespace std; // Make the largest even number string makeEven(string str) { int n = str.length(); int even = INT_MAX, index; // Start traversing the string for ( int i = 0; i < n - 1; i++) { // Find the even number if ((str[i] - '0' ) % 2 == 0) { even = (str[i] - '0' ); index = i; } // Check if current even is equal to // or less than the odd number if (even <= (str[n - 1] - '0' )) break ; } // Return original string if there is no // even value if (even == INT_MAX) return str; // Swap even and odd value swap(str[index], str[n - 1]); return str; } // Driver code int main() { string str = "1356425" ; cout << makeEven(str); return 0; } |
JAVA
// Java program for above implementation class GFG { // Make the largest even number static char [] makeEven(String string) { char []str = string.toCharArray(); int n = str.length; int even = Integer.MAX_VALUE, index = 0 ; // Start traversing the String for ( int i = 0 ; i < n - 1 ; i++) { // Find the even number if ((str[i] - '0' ) % 2 == 0 ) { even = (str[i] - '0' ); index = i; } // Check if current even is equal to // or less than the odd number if (even <= (str[n- 1 ] - '0' )) { break ; } } // Return original String if there is no // even value if (even == Integer.MAX_VALUE) { return str; } // Swap even and odd value swap(str,index, n - 1 ); return str; } static void swap( char [] str, int index1, int index2){ char temp = str[index1]; str[index1] = str[index2]; str[index2] =temp; } // Driver code public static void main(String[] args) { String str = "1356425" ; System.out.print(makeEven(str)); } } /*This code is contributed by PrinciRaj1992*/ |
Python3
# Python3 code for the above implementation import sys # Make the largest even number def makeEven(arr, n): # index to first even no,if any first_e_i = - 1 # index to last even no, if any last_e_i = - 1 # index to last no last_n_i = n - 1 # Start traversing the String for i in range (n): # if it finds any first even no less # than last digit then break the loop if ( int (arr[i]) % 2 = = 0 and int (arr[i]) < int (arr[last_n_i])): first_e_i = i break # it finds last even no if int (arr[i]) % 2 = = 0 : last_e_i = i if first_e_i ! = - 1 : # swap even and odd value (arr[first_e_i], arr[last_n_i]) = (arr[last_n_i], arr[first_e_i]) return arr if first_e_i = = - 1 and last_e_i ! = - 1 : # swap even and odd value (arr[last_e_i], arr[last_n_i]) = (arr[last_n_i], arr[last_e_i]) return arr # Return original String if there is # no even number return arr # Driver Code if __name__ = = '__main__' : string = "1356425" result = "".join(makeEven( list (string), len ( list (string)))) print (result) # This code is contributed # by Vikash Kumar 37 |
C#
// C# implementation of above approach using System; public class GFG { // Make the largest even number static char [] makeEven(String str1) { char []str = str1.ToCharArray(); int n = str.Length; int even = int .MaxValue, index = 0; // Start traversing the String for ( int i = 0; i < n - 1; i++) { // Find the even number if ((str[i] - '0' ) % 2 == 0) { even = (str[i] - '0' ); index = i; } // Check if current even is equal to // or less than the odd number if (even <= (str[n-1] - '0' )) { break ; } } // Return original String if there is no // even value if (even == int .MaxValue) { return str; } // Swap even and odd value swap(str,index, n - 1); return str; } static void swap( char [] str, int index1, int index2){ char temp = str[index1]; str[index1] = str[index2]; str[index2] =temp; } // Driver code public static void Main() { String str = "1356425" ; Console.WriteLine(makeEven(str)); } } /*This code is contributed by PrinciRaj1992*/ |
PHP
<?php // PHP program for above implementation // Make the largest even number function makeEven( $str ) { $n = strlen ( $str ); $even = PHP_INT_MAX; $index ; // Start traversing the string for ( $i = 0; $i < $n - 1; $i ++) { // Find the even number if (( $str [ $i ] - '0' ) % 2 == 0) { $even = ( $str [ $i ] - '0' ); $index = $i ; } // Check if current even is // equal to or less than // the odd number if ( $even <= ( $str [ $n - 1] - '0' )) break ; } // Return original string if // there is no even value if ( $even == PHP_INT_MAX) return $str ; //swap the number list( $str [ $index ], $str [ $n - 1]) = array ( $str [ $n - 1], $str [ $index ]); return $str ; } // Driver code $str = "1356425" ; echo makeEven( $str ); // This code is contributed by ajit ?> |
Javascript
<script> // Javascript program for above implementation // Make the largest even number function makeEven(string) { let str = string.split( '' ); let n = str.length; let even = Number.MAX_VALUE, index = 0; // Start traversing the String for (let i = 0; i < n - 1; i++) { // Find the even number if ((str[i].charCodeAt() - '0' .charCodeAt()) % 2 == 0) { even = (str[i] - '0' ); index = i; } // Check if current even is equal to // or less than the odd number if (even <= (str[n-1].charCodeAt() - '0' .charCodeAt())) { break ; } } // Return original String if there is no // even value if (even == Number.MAX_VALUE) { return str; } // Swap even and odd value swap(str,index, n - 1); return str.join( "" ); } function swap(str, index1, index2) { let temp = str[index1]; str[index1] = str[index2]; str[index2] =temp; } let str = "1356425" ; document.write(makeEven(str)); </script> |
输出:
1356524
时间复杂性: O(N) 本文由 萨希尔·查布拉 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END