Program to delete Nth digit of a Number
Last Updated : 30 Jun, 2022
Given a number num and a number n, the task is to delete this nth digit of the number num, from starting and from end.
Examples:
Input: num = 1234, n = 3
Output: num_after_deleting_from_starting = 124, num_after_deleting_from_end = 134
Input: num = 4516312, n = 2
Output: num_after_deleting_from_starting = 416312, num_after_deleting_from_end = 451632
Approach:
- To delete nth digit from starting:
- Get the number and the nth digit to be deleted.
- Count the number of digits
- Loop number of digits time by counting it with a variable i.
- If the i is equal to (number of digits - n), then skip, else add the ith digit as [ new_number = (new_number * 10) + ith_digit ].
- To delete nth digit from ending:
- Get the number and the nth digit to be deleted.
- Loop number of digits time by counting it with a variable i.
- If the i is equal to (n), then skip, else add the ith digit as [ new_number = (new_number * 10) + ith_digit ].
Implementation:
C++ // C++ implementation of above approach #include <bits/stdc++.h> using namespace std; // Function to delete nth digit // from starting int deleteFromStart(int num, int n) { // Get the number of digits int d = log10(num) + 1; // Declare a variable // to form the reverse resultant number int rev_new_num = 0; // Loop with the number for (int i = 0; num != 0; i++) { int digit = num % 10; num = num / 10; if (i == (d - n)) { continue; } else { rev_new_num = (rev_new_num * 10) + digit; } } // Declare a variable // to form the resultant number int new_num = 0; // Loop with the number for (int i = 0; rev_new_num != 0; i++) { new_num = (new_num * 10) + (rev_new_num % 10); rev_new_num = rev_new_num / 10; } // Return the resultant number return new_num; } // Function to delete nth digit // from ending int deleteFromEnd(int num, int n) { // Declare a variable // to form the reverse resultant number int rev_new_num = 0; // Loop with the number for (int i = 1; num != 0; i++) { int digit = num % 10; num = num / 10; if (i == n) { continue; } else { rev_new_num = (rev_new_num * 10) + digit; } } // Declare a variable // to form the resultant number int new_num = 0; // Loop with the number for (int i = 0; rev_new_num != 0; i++) { new_num = (new_num * 10) + (rev_new_num % 10); rev_new_num = rev_new_num / 10; } // Return the resultant number return new_num; } // Driver code int main() { // Get the number int num = 1234; cout << "Number: " << num << endl; // Get the digit number to be deleted int n = 3; cout << "Digit to be deleted: " << n << endl; // Remove the nth digit from starting cout << "Number after " << n << " digit deleted from starting: " << deleteFromStart(num, n) << endl; // Remove the nth digit from ending cout << "Number after " << n << " digit deleted from ending: " << deleteFromEnd(num, n) << endl; return 0; }
Java // Java implementation of above approach class GFG { // Function to delete nth digit // from starting static int deleteFromStart(int num, int n) { // Get the number of digits int d = (int)Math.log10(num) + 1; // Declare a variable // to form the reverse resultant number int rev_new_num = 0; // Loop with the number for (int i = 0; num != 0; i++) { int digit = num % 10; num = num / 10; if (i == (d - n)) { continue; } else { rev_new_num = (rev_new_num * 10) + digit; } } // Declare a variable // to form the resultant number int new_num = 0; // Loop with the number for (int i = 0; rev_new_num != 0; i++) { new_num = (new_num * 10) + (rev_new_num % 10); rev_new_num = rev_new_num / 10; } // Return the resultant number return new_num; } // Function to delete nth digit // from ending static int deleteFromEnd(int num, int n) { // Declare a variable // to form the reverse resultant number int rev_new_num = 0; // Loop with the number for (int i = 1; num != 0; i++) { int digit = num % 10; num = num / 10; if (i == n) { continue; } else { rev_new_num = (rev_new_num * 10) + digit; } } // Declare a variable // to form the resultant number int new_num = 0; // Loop with the number for (int i = 0; rev_new_num != 0; i++) { new_num = (new_num * 10) + (rev_new_num % 10); rev_new_num = rev_new_num / 10; } // Return the resultant number return new_num; } // Driver code public static void main(String []args) { // Get the number int num = 1234; System.out.println("Number: " + num ); // Get the digit number to be deleted int n = 3; System.out.println("Digit to be deleted: " + n ); // Remove the nth digit from starting System.out.println("Number after " + n + " digit deleted from starting: " + deleteFromStart(num, n)); // Remove the nth digit from ending System.out.println( "Number after " + n + " digit deleted from ending: " + deleteFromEnd(num, n)); } } // This code is contributed by ihritik
Python3 # Python3 implementation of above approach # Function to delete nth digit # from starting import math; def deleteFromStart(num, n): # Get the number of digits d = (math.log10(num) + 1); # Declare a variable to form # the reverse resultant number rev_new_num = 0; # Loop with the number i = 0; while (num != 0): digit = num % 10; num = int(num / 10); if (i != (int(d) - n)): rev_new_num = ((rev_new_num * 10) + digit); i += 1; # Declare a variable to form the # resultant number new_num = 0; # Loop with the number i = 0; while (rev_new_num != 0): new_num = ((new_num * 10) + (rev_new_num % 10)); rev_new_num = int(rev_new_num / 10); i += 1; # Return the resultant number return new_num; # Function to delete nth digit # from ending def deleteFromEnd(num, n): # Declare a variable to form # the reverse resultant number rev_new_num = 0; # Loop with the number i = 1; while (num != 0): digit = num % 10; num = int(num / 10); if (i != n): rev_new_num = ((rev_new_num * 10) + digit); i += 1; # Declare a variable # to form the resultant number new_num = 0; # Loop with the number i = 0; while (rev_new_num != 0): new_num = ((new_num * 10) + (rev_new_num % 10)); rev_new_num = int(rev_new_num / 10); i += 1; # Return the resultant number return new_num; # Driver code # Get the number num = 1234; print("Number:", num); # Get the digit number to be deleted n = 3; print("Digit to be deleted:", n); # Remove the nth digit from starting print("Number after", n, "digit deleted from starting:", deleteFromStart(num, n)); # Remove the nth digit from ending print("Number after", n, "digit deleted from ending:", deleteFromEnd(num, n)); # This code is contributed by chandan_jnu
C# // C# implementation of the above approach using System; class GFG { // Function to delete nth digit // from starting static int deleteFromStart(int num, int n) { // Get the number of digits int d = (int)Math.Log10(num) + 1; // Declare a variable // to form the reverse resultant number int rev_new_num = 0; // Loop with the number for (int i = 0; num != 0; i++) { int digit = num % 10; num = num / 10; if (i == (d - n)) { continue; } else { rev_new_num = (rev_new_num * 10) + digit; } } // Declare a variable // to form the resultant number int new_num = 0; // Loop with the number for (int i = 0; rev_new_num != 0; i++) { new_num = (new_num * 10) + (rev_new_num % 10); rev_new_num = rev_new_num / 10; } // Return the resultant number return new_num; } // Function to delete nth digit // from ending static int deleteFromEnd(int num, int n) { // Declare a variable // to form the reverse resultant number int rev_new_num = 0; // Loop with the number for (int i = 1; num != 0; i++) { int digit = num % 10; num = num / 10; if (i == n) { continue; } else { rev_new_num = (rev_new_num * 10) + digit; } } // Declare a variable // to form the resultant number int new_num = 0; // Loop with the number for (int i = 0; rev_new_num != 0; i++) { new_num = (new_num * 10) + (rev_new_num % 10); rev_new_num = rev_new_num / 10; } // Return the resultant number return new_num; } // Driver code public static void Main() { // Get the number int num = 1234; Console.WriteLine("Number: " + num ); // Get the digit number to be deleted int n = 3; Console.WriteLine("Digit to be deleted: " + n ); // Remove the nth digit from starting Console.WriteLine("Number after " + n + " digit deleted from starting: " + deleteFromStart(num, n)); // Remove the nth digit from ending Console.WriteLine( "Number after " + n + " digit deleted from ending: " + deleteFromEnd(num, n)); } } // This code is contributed by ihritik
PHP <?php //PHP implementation of above approach // Function to delete nth digit // from starting function deleteFromStart($num, $n) { // Get the number of digits $d = (log10($num) + 1); // Declare a variable // to form the reverse resultant number $rev_new_num = 0; // Loop with the number for ($i = 0; $num != 0; $i++) { $digit = $num % 10; $num = (int)$num / 10; if ($i == ($d - $n)) { continue; } else { $rev_new_num = ($rev_new_num * 10) + $digit; } } // Declare a variable // to form the resultant number $new_num = 0; // Loop with the number for ($i = 0; $rev_new_num != 0; $i++) { $new_num = ($new_num * 10) + ($rev_new_num % 10); $rev_new_num = (int)$rev_new_num / 10; } // Return the resultant number return $new_num; } // Function to delete nth digit // from ending function deleteFromEnd($num, $n) { // Declare a variable // to form the reverse resultant number $rev_new_num = 0; // Loop with the number for ($i = 1; $num != 0; $i++) { $digit = $num % 10; $num = (int)$num / 10; if ($i == $n) { continue; } else { $rev_new_num = ($rev_new_num * 10) + $digit; } } // Declare a variable // to form the resultant number $new_num = 0; // Loop with the number for ($i = 0; $rev_new_num != 0; $i++) { $new_num = ($new_num * 10) + ($rev_new_num % 10); $rev_new_num = (int)$rev_new_num / 10; } // Return the resultant number return $new_num; } // Driver code // Get the number $num = 1234; echo "Number: " , $num ,"\n"; // Get the digit number to be deleted $n = 3; echo "Digit to be deleted: " ,$n ,"\n"; // Remove the nth digit from starting echo "Number after " , $n, " digit deleted from starting: ", deleteFromStart($num, $n),"\n"; // Remove the nth digit from ending echo "Number after " , $n, " digit deleted from ending: ", deleteFromEnd($num, $n) ,"\n"; ?> // This code is contributed by jit_t.
JavaScript <script> // Javascript implementation of // the above approach // Function to delete nth digit // from starting function deleteFromStart(num, n) { // Get the number of digits let d = parseInt(Math.log10(num), 10) + 1; // Declare a variable // to form the reverse resultant number let rev_new_num = 0; // Loop with the number for (let i = 0; num != 0; i++) { let digit = num % 10; num = parseInt(num / 10, 10); if (i == (d - n)) { continue; } else { rev_new_num = (rev_new_num * 10) + digit; } } // Declare a variable // to form the resultant number let new_num = 0; // Loop with the number for (let i = 0; rev_new_num != 0; i++) { new_num = (new_num * 10) + (rev_new_num % 10); rev_new_num = parseInt(rev_new_num / 10, 10); } // Return the resultant number return new_num; } // Function to delete nth digit // from ending function deleteFromEnd(num, n) { // Declare a variable // to form the reverse resultant number let rev_new_num = 0; // Loop with the number for (let i = 1; num != 0; i++) { let digit = num % 10; num = parseInt(num / 10, 10); if (i == n) { continue; } else { rev_new_num = (rev_new_num * 10) + digit; } } // Declare a variable // to form the resultant number let new_num = 0; // Loop with the number for (let i = 0; rev_new_num != 0; i++) { new_num = (new_num * 10) + (rev_new_num % 10); rev_new_num = parseInt(rev_new_num / 10, 10); } // Return the resultant number return new_num; } // Get the number let num = 1234; document.write("Number: " + num + "</br>"); // Get the digit number to be deleted let n = 3; document.write("Digit to be deleted: " + n + "</br>"); // Remove the nth digit from starting document.write("Number after " + n + " digit deleted from starting: " + deleteFromStart(num, n) + "</br>"); // Remove the nth digit from ending document.write( "Number after " + n + " digit deleted from ending: " + deleteFromEnd(num, n)); </script>
Output: Number: 1234 Digit to be deleted: 3 Number after 3 digit deleted from starting: 124 Number after 3 digit deleted from ending: 134
Complexity Analysis:
Time complexity: O(log(N)).
Auxiliary Space: O(1), since no extra space has been taken.
Another Approach: (To convert number into string)
C++ // C++ implementation to delete nth digit // from starting with O(logN) time complexity. #include<bits/stdc++.h> using namespace std; // function to delete nth number from starting static string fromStart(string inp, int del) { string inp1 = inp.substr(0, del - 1); string inp2 = inp.substr(del, inp.length()); return inp1 + inp2; } // function to delete nth number from ending static string fromEnd(string inp, int del) { string inp1 = inp.substr(0, inp.length() - del); string inp2 = inp.substr(inp.length() - del + 1, inp.length()); return inp1 + inp2; } // Driver Code int main() { int in = 1234; // type cast input number to string stringstream ss; ss << in; string inp = ss.str(); int del = 3; cout << "num_after_deleting_from_starting " << fromStart(inp, del) << endl; cout << "num_after_deleting_from_ending " << fromEnd(inp, del) << endl; return 0; } // This code is contributed by chandan_jnu
Java // Java implementation to delete nth digit // from starting with O(logN) time complexity. public class DeleteN { public static void main(String args[]) { int in = 1234; // type cast input number to string String inp = Integer.toString(in); int del = 3; System.out.println("num_after_deleting_from_starting " + fromStart(inp, del)); System.out.println("num_after_deleting_from_ending " + fromEnd(inp, del)); } // function to delete nth number from starting static String fromStart(String inp, int del) { try { String inp1 = inp.substring(0, del - 1); String inp2 = inp.substring(del, inp.length()); return inp1 + inp2; } catch (Exception e) { return "Check Input"; } } // function to delete nth number from ending static String fromEnd(String inp, int del) { try { String inp1 = inp.substring(0, inp.length() - del); String inp2 = inp.substring(inp.length() - del + 1, inp.length()); return inp1 + inp2; } catch (Exception e) { return "Check Input"; } } }
Python3 # Python3 implementation to delete nth digit # from starting with O(logN) time complexity. # function to del1ete nth number # from starting def fromStart(inp, del11): inp1 = inp[0:del1 - 1]; inp2 = inp[del1:len(inp)]; return inp1 + inp2; # function to delete nth number # from ending def fromEnd(inp, del1): inp1 = inp[0:len(inp) - del1]; inp2 = inp[len(inp) - del1 + 1:len(inp)]; return inp1 + inp2; # Driver Code in1 = 1234; # type cast input number to string inp = str(in1); del1 = 3; print("num_after_deleting_from_starting", fromStart(inp, del1)); print("num_after_deleting_from_ending", fromEnd(inp, del1)); # This code is contributed by chandan_jnu
C# // C# implementation to delete nth digit // from starting with O(logN) time complexity. using System ; public class DeleteN { public static void Main() { int num = 1234; // type cast input number to string string inp = Convert.ToString(num) ; int del = 3; Console.WriteLine("num_after_deleting_from_starting " + fromStart(inp, del)); Console.WriteLine("num_after_deleting_from_ending " + fromEnd(inp, del)); } // function to delete nth number from starting static String fromStart(string inp, int del) { try { string inp1 = inp.Substring(0, del - 1); string inp2 = inp.Substring(del, inp.Length - del); return inp1 + inp2; } catch (Exception ) { return "Check Input"; } } // function to delete nth number from ending static String fromEnd(string inp, int del) { try { string inp1 = inp.Substring(0, inp.Length - del); string inp2 = inp.Substring(inp.Length - del + 1, del - 1); return inp1 + inp2; } catch (Exception e) { Console.WriteLine(e) ; return "Check Input"; } } } // This code is contributed by Ryuga
PHP <?php // PHP implementation to delete nth digit // from starting with O(logN) time complexity. // function to delete nth number from starting function fromStart($inp, $del) { $inp1 = substr($inp, 0, $del - 1); $inp2 = substr($inp, $del, strlen($inp)); return $inp1.$inp2; } // function to delete nth number from ending function fromEnd($inp, $del) { $inp1 = substr($inp, 0, strlen($inp) - $del); $inp2 = substr($inp, strlen($inp) - $del + 1, strlen($inp)); return $inp1.$inp2; } // Driver Code $in = 1234; // type cast input number to string $inp = strval($in); $del = 3; print("num_after_deleting_from_starting " . fromStart($inp, $del) . "\n"); print("num_after_deleting_from_ending " . fromEnd($inp, $del)); // This code is contributed by chandan_jnu ?>
JavaScript <script> // Javascript implementation to delete nth digit // from starting with O(logN) time complexity. // function to delete nth number from starting function fromStart(inp, del) { let inp1 = inp.substring(0, del - 1); let inp2 = inp.substring(del, inp.length); return inp1 + inp2; } function fromEnd(inp, del) { let inp1 = inp.substring(0, inp.length - del); let inp2 = inp.substring(inp.length - del + 1, inp.length - del + 1 + inp.length); return inp1 + inp2; } let In = 1234; // type cast input number to string let inp = In.toString(); let del = 3; document.write("num_after_deleting_from_starting " + fromStart(inp, del) + "</br>"); document.write("num_after_deleting_from_ending " + fromEnd(inp, del) + "</br>"); // This code is contributed by mukesh07. </script>
Output:
num_after_deleting_from_starting 124 num_after_deleting_from_ending 134
Time complexity :O(log(N)).
Auxiliary Space: O(log(N)).
Similar Reads
C++ Program to Rotate digits of a given number by K
Given two integers N and K, the task is to rotate the digits of N by K. If K is a positive integer, left rotate its digits. Otherwise, right rotate its digits. Examples: Input: N = 12345, K = 2Output: 34512 Explanation: Left rotating N(= 12345) by K(= 2) modifies N to 34512. Therefore, the required
2 min read
Largest and smallest digit of a number
Given a number N. The task is to find the largest and the smallest digit of the number.Examples : Input : N = 2346 Output : 6 2 6 is the largest digit and 2 is smallestInput : N = 5 Output : 5 5 Approach: An efficient approach is to find all digits in the given number and find the largest and the sm
7 min read
C++ Program to Check Whether a Number is Palindrome or Not
A palindrome number is a number that remains the same even if its digits are reversed. In this article, we will learn how to check a given number is a palindrome or not in C++. The easiest way to check if a number is a palindrome is to simply reverse the original number, then check if both numbers a
4 min read
TCS Coding Practice Question | Sum of Digits of a number
Given a number, the task is to find the Sum of Digits of this number using Command Line Arguments. Examples: Input: num = 687 Output: 21 Input: num = 12 Output: 3 Approach: Since the number is entered as Command line Argument, there is no need for a dedicated input lineExtract the input number from
4 min read
C++ Program for Largest K digit number divisible by X
Integers X and K are given. The task is to find highest K-digit number divisible by X. Examples: Input : X = 30, K = 3 Output : 990 990 is the largest three digit number divisible by 30. Input : X = 7, K = 2 Output : 98 An efficient solution is to use below formula. ans = MAX - (MAX % X) where MAX i
1 min read
C++ Program for Smallest K digit number divisible by X
Integers X and K are given. The task is to find the smallest K-digit number divisible by X. Examples: Input : X = 83, K = 5 Output : 10043 10040 is the smallest 5 digit number that is multiple of 83. Input : X = 5, K = 2 Output : 10 An efficient solution would be : Compute MIN : smallest K-digit num
2 min read
How to store a very large number of more than 100 digits in C++
Given an integer N in form of string str consisting of more than 100 digits, the task is to store the value for performing an arithmetic operation and print the given integer.Examples: Input: str = "54326789013892014531903492543267890138920145319034925432678901389201" Output: 54326789013892014531903
3 min read
Perform n steps to convert every digit of a number in the format [count][digit]
Given a number num as a string and a number N. The task is to write a program which converts the given number num to another number after performing N steps. At each step, every digit of num will be written in the format [count][digit] in the new number, where count is the number of times a digit oc
12 min read
Minimum number of digits to be removed so that no two consecutive digits are same
Given a number N. The task is to count the minimum number of digits to be removed from the number so that no two consecutive digits are the same.Examples: Input : N = 11344 Output : 2 Explanation : Remove the digit 1 from 2nd place and 4 from the end so that the number becomes 134. Thus no two conse
5 min read
Find all digits of given number N that are factors of N
Given a number N, the task is to print the digits of N which divide N. Example: Input: N = 234Output: 2 3 Input: N = 555Output: 5 Approach: The idea is to iterate over all the digits of N and check whether that digit divides N or not. Follow the steps below to solve the problem: Initialize the varia
4 min read