Minimum possible number with the given operation
Given a positive integer N, the task is to convert this integer to the minimum possible integer without leading zeroes by changing the digits. A digit X can only be changed into a digit Y if X + Y = 9.
Examples:
Input: N = 589
Output: 410
Change 5 -> 4, 8 -> 1 and 9 -> 0
Input: N = 934
Output: 934
934 cannot be minimised.
Approach: Only the digits which are greater than or equal to 5 need to be changed as changing the digits which are less than 5 will result in a larger number. After all the required digits have been updated, check whether the resultant number has a leading zero, if yes then change it to a 9.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
string minInt(string str)
{
for ( int i = 0; i < str.length(); i++) {
if (str[i] >= '5' ) {
str[i] = ( '9' - str[i]) + '0' ;
}
}
if (str[0] == '0' )
str[0] = '9' ;
return str;
}
int main()
{
string str = "589" ;
cout << minInt(str);
return 0;
}
|
Java
import java.util.*;
class GFG{
static String minInt(String str)
{
String s = "" ;
for ( int i = 0 ; i < str.length(); i++)
{
if (str.charAt(i) >= '5' )
{
s += ( char )(( '9' - str.charAt(i)) + '0' );
}
else
{
s += str.charAt(i);
}
}
if (str.charAt( 0 ) == '0' )
s += '9' ;
return s;
}
public static void main(String []args)
{
String str = "589" ;
System.out.println(minInt(str));
}
}
|
Python3
def minInt(str1):
for i in range ( len (str1)):
if (str1[i] > = 5 ):
str1[i] = ( 9 - str1[i])
if (str1[ 0 ] = = 0 ):
str1[ 0 ] = 9
temp = ""
for i in str1:
temp + = str (i)
return temp
str1 = "589"
str1 = [ int (i) for i in str1]
print (minInt(str1))
|
C#
using System;
class GFG
{
static string minInt( char []str)
{
for ( int i = 0; i < str.Length; i++)
{
if (( int )str[i] >= ( int )( '5' ))
{
str[i] = ( char )((( int )( '9' ) -
( int )(str[i])) +
( int )( '0' ));
}
}
if (str[0] == '0' )
str[0] = '9' ;
string s = new string (str);
return s;
}
static public void Main ()
{
string str = "589" ;
Console.WriteLine(minInt(str.ToCharArray()));
}
}
|
Javascript
<script>
function minInt(str)
{
for (let i = 0; i < str.length; i++)
{
if (str[i].charCodeAt() >= ( '5' ).charCodeAt())
{
str[i] = String.fromCharCode((( '9' ).charCodeAt() -
(str[i]).charCodeAt()) +
( '0' ).charCodeAt());
}
}
if (str[0] == '0' )
str[0] = '9' ;
let s = str.join( "" );
return s;
}
let str = "589" ;
document.write(minInt(str.split( '' )));
</script>
|
Time Complexity: O(|str|)
Auxiliary Space: O(1)
Last Updated :
19 Mar, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...