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++
// C++ implementation of the approach#include <bits/stdc++.h>using namespace std;// Function to return the minimum possible// integer that can be obtained from the// given integer after performing// the given operationsstring minInt(string str){ // For every digit for (int i = 0; i < str.length(); i++) { // Digits less than 5 need not to be // changed as changing them will // lead to a larger number if (str[i] >= '5') { str[i] = ('9' - str[i]) + '0'; } } // The resulting integer // cannot have leading zero if (str[0] == '0') str[0] = '9'; return str;}// Driver codeint main(){ string str = "589"; cout << minInt(str); return 0;} |
Java
// Java implementation of the approach// Function to return the minimum possible// integer that can be obtained from the// given integer after performing// the given operationsimport java.util.*;class GFG{static String minInt(String str){ // For every digit String s = ""; for (int i = 0; i < str.length(); i++) { // Digits less than 5 need not to be // changed as changing them will // lead to a larger number if (str.charAt(i) >= '5') { s += (char)(('9' - str.charAt(i)) + '0'); } else { s += str.charAt(i); } } // The resulting integer // cannot have leading zero if (str.charAt(0) == '0') s += '9'; return s;}// Driver codepublic static void main(String []args){ String str = "589"; System.out.println(minInt(str));}}// This code is contributed by Surendra_Gangwar |
Python3
# Python3 implementation of the approach # Function to return the minimum possible# integer that can be obtained from the# given integer after performing# the given operationsdef minInt(str1): # For every digit for i in range(len(str1)): # Digits less than 5 need not to be # changed as changing them will # lead to a larger number if (str1[i] >= 5): str1[i] = (9 - str1[i]) # The resulting integer # cannot have leading zero if (str1[0] == 0): str1[0] = 9 temp = "" for i in str1: temp += str(i) return temp# Driver codestr1 = "589"str1 = [int(i) for i in str1]print(minInt(str1))# This code is contributed by Mohit Kumar |
C#
// C# implementation of the above approach using System;class GFG{ // Function to return the minimum possible // integer that can be obtained from the // given integer after performing // the given operations static string minInt(char []str) { // For every digit for (int i = 0; i < str.Length; i++) { // Digits less than 5 need not to be // changed as changing them will // lead to a larger number if ((int)str[i] >= (int)('5')) { str[i] = (char)(((int)('9') - (int)(str[i])) + (int)('0')); } } // The resulting integer // cannot have leading zero if (str[0] == '0') str[0] = '9'; string s = new string(str); return s; } // Driver code static public void Main () { string str = "589"; Console.WriteLine(minInt(str.ToCharArray())); } }// This code is contributed by AnkitRai01 |
Javascript
<script> // JavaScript implementation of the above approach // Function to return the minimum possible // integer that can be obtained from the // given integer after performing // the given operations function minInt(str) { // For every digit for (let i = 0; i < str.length; i++) { // Digits less than 5 need not to be // changed as changing them will // lead to a larger number if (str[i].charCodeAt() >= ('5').charCodeAt()) { str[i] = String.fromCharCode((('9').charCodeAt() - (str[i]).charCodeAt()) + ('0').charCodeAt()); } } // The resulting integer // cannot have leading zero if (str[0] == '0') str[0] = '9'; let s = str.join(""); return s; } let str = "589"; document.write(minInt(str.split(''))); </script> |
410
Time Complexity: O(|str|)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



