📌  相关文章
📜  给定操作的最小可能数

📅  最后修改于: 2021-04-23 19:16:02             🧑  作者: Mango

给定正整数N ,任务是通过更改数字,将该整数转换为最小可能的整数,且不使用前导零。如果X + Y = 9,则只能将数字X更改为数字Y。

例子:

方法:仅需要更改大于或等于5的数字,因为更改小于5的数字将导致更大的数字。在所有必需的数字都更新之后,检查结果数字是否带有前导零,如果是,则将其更改为9

下面是上述方法的实现:

C++
// C++ implementation of the approach
#include 
using namespace std;
  
// Function to return the minimum possible
// integer that can be obtained from the
// given integer after performing
// the given operations
string 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 code
int 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 operations
  
import 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 code
public 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 operations
def 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 code
str1 = "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


输出:
410