# Minimize the number by changing at most K digits

• Difficulty Level : Easy
• Last Updated : 01 Mar, 2022

Given a number N, the task is to minimize the number by changing at most K digits. Note that the number should not contain any leading zeros.
Examples:

Input: N = 91945, K = 3
Output: 10045
Input: N = 1, K = 0
Output:

Approach:

• Replace the first digit with 1 if its not already 1 and update K accordingly.
• Now for the rest of the digits, replace the next K – 1 non-zero digits with a 0.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;` `// Function to return the minimized number``string minNum(string num, ``int` `k)``{` `    ``// Total digits in the number``    ``int` `len = num.length();` `    ``// If the string is empty or there``    ``// are no operations to perform``    ``if` `(len == 0 || k == 0)``        ``return` `num;` `    ``// "0" is a valid number``    ``if` `(len == 1)``        ``return` `"0"``;` `    ``// If the first digit is not already 1 then``    ``// update it to 1 and decrement k``    ``if` `(num[0] != ``'1'``) {``        ``num[0] = ``'1'``;``        ``k--;``    ``}` `    ``int` `i = 1;``    ``// While there are operations left``    ``// and the number can still be updated``    ``while` `(k > 0 && i < len) {` `        ``// If the current digit is not already 0``        ``// then update it to 0 and decrement k``        ``if` `(num[i] != ``'0'``) {``            ``num[i] = ``'0'``;``            ``k--;``        ``}` `        ``i++;``    ``}` `    ``// Return the minimized number``    ``return` `num;``}` `// Driver code``int` `main()``{``    ``string num = ``"91945"``;``    ``int` `k = 3;` `    ``cout << minNum(num, k);` `    ``return` `0;``}`

## Java

 `// Java implementation of the approach``class` `GFG``{``    ` `    ``// Function to return the minimized number``    ``static` `String minNum(``char` `num[], ``int` `k)``    ``{``    ` `        ``// Total digits in the number``        ``int` `len = num.length;``    ` `        ``// If the string is empty or there``        ``// are no operations to perform``        ``if` `(len == ``0` `|| k == ``0``)``        ``{``            ``String num_str = ``new` `String(num);``            ``return` `num_str;``        ``}``    ` `        ``// "0" is a valid number``        ``if` `(len == ``1``)``            ``return` `"0"``;``    ` `        ``// If the first digit is not already 1 then``        ``// update it to 1 and decrement k``        ``if` `(num[``0``] != ``'1'``)``        ``{``            ``num[``0``] = ``'1'``;``            ``k--;``        ``}``    ` `        ``int` `i = ``1``;``        ` `        ``// While there are operations left``        ``// and the number can still be updated``        ``while` `(k > ``0` `&& i < len)``        ``{``    ` `            ``// If the current digit is not already 0``            ``// then update it to 0 and decrement k``            ``if` `(num[i] != ``'0'``)``            ``{``                ``num[i] = ``'0'``;``                ``k--;``            ``}``            ``i++;``        ``}``        ` `        ``String num_str = ``new` `String(num);``        ` `        ``// Return the minimised number``        ``return` `num_str;``    ``}``    ` `    ``// Driver code``    ``public` `static` `void` `main(String args[])``    ``{``        ``String num = ``"91945"``;``        ``int` `k = ``3``;``    ` `        ``System.out.println(minNum(num.toCharArray(), k));``    ``}``}` `// This code is contributed by AnkitRai01`

## Python3

 `# Python 3 implementation of the approach` `# Function to return the minimized number``def` `minNum(num, k) :` `    ``# Total digits in the number``    ``len_ ``=` `len``(num)` `    ``# If the string is empty or there``    ``# are no operations to perform``    ``if` `len_ ``=``=` `0` `or` `k ``=``=` `0` `:``        ``return` `num` `    ``# "0" is a valid number``    ``if` `len_ ``=``=` `1``:``        ``return` `"0"` `    ``# If the first digit is not already 1 then``    ``# update it to 1 and decrement k``    ``if` `num[``0``] !``=` `'1'` `:``        ``num ``=` `'1'` `+` `num[``1``:]``        ``k ``-``=` `1` `    ``i ``=` `1``    ` `    ``# While there are operations left``    ``# and the number can still be updated``    ``while` `k > ``0` `and` `i < len_ :` `        ``# If the current digit is not already 0``        ``# then update it to 0 and decrement k``        ``if` `num[i] !``=` `'0'` `:``            ``num ``=` `num[:i] ``+` `'0'` `+` `num[i ``+` `1``:]``            ``k ``-``=` `1` `        ``i ``+``=` `1`` ` `    ``# Return the minimised number``    ``return` `num` `# Driver code``num ``=` `"91945"``k ``=` `3` `print``(minNum(num, k))` `# This code is contributed by divyamohan123`

## C#

 `// C# implementation of the approach``using` `System;``    ` `class` `GFG``{``    ` `    ``// Function to return the minimized number``    ``static` `String minNum(``char` `[]num, ``int` `k)``    ``{``    ` `        ``// Total digits in the number``        ``int` `len = num.Length;``    ` `        ``// If the string is empty or there``        ``// are no operations to perform``        ``if` `(len == 0 || k == 0)``        ``{``            ``return` `String.Join(``""``, num);``        ``}``    ` `        ``// "0" is a valid number``        ``if` `(len == 1)``            ``return` `"0"``;``    ` `        ``// If the first digit is not already 1 then``        ``// update it to 1 and decrement k``        ``if` `(num[0] != ``'1'``)``        ``{``            ``num[0] = ``'1'``;``            ``k--;``        ``}``    ` `        ``int` `i = 1;``        ` `        ``// While there are operations left``        ``// and the number can still be updated``        ``while` `(k > 0 && i < len)``        ``{``    ` `            ``// If the current digit is not already 0``            ``// then update it to 0 and decrement k``            ``if` `(num[i] != ``'0'``)``            ``{``                ``num[i] = ``'0'``;``                ``k--;``            ``}``            ``i++;``        ``}``        ` `        ``// Return the minimised number``        ``return` `String.Join(``""``, num);``    ``}``    ` `    ``// Driver code``    ``public` `static` `void` `Main(String []args)``    ``{``        ``String num = ``"91945"``;``        ``int` `k = 3;``    ` `        ``Console.WriteLine(minNum(num.ToCharArray(), k));``    ``}``}` `// This code is contributed by 29AjayKumar`

## Javascript

 ``

Output:

`10045`

Time Complexity: O(min(k, |num|))

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up