Program to delete Nth digit of a Number - GeeksforGeeks

21 Aug, 2021
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 = 134Input: 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 digitsLoop number of digits time by counting it with a variable i.If the i is equal to (number of digits – i), then skip, else add the ith digit as [ new_number = (new_number * 10) + ith_digit ].
Get the number and the nth digit to be deleted.Count the number of digitsLoop number of digits time by counting it with a variable i.If the i is equal to (number of digits – i), then skip, else add the ith digit as [ new_number = (new_number * 10) + ith_digit ].
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 – i), 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 ].
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 ].
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++
Java
Python3
C#
PHP
Javascript
// C++ implementation of above approach#include <bits/stdc++.h>using namespace std;  // Function to delete nth digit// from startingint 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 endingint 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 codeint 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 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 implementation of above approach  # Function to delete nth digit# from startingimport 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 endingdef 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 numbernum = 1234;print("Number:", num);  # Get the digit number to be deletedn = 3;print("Digit to be deleted:", n);  # Remove the nth digit from startingprint("Number after", n,       "digit deleted from starting:",             deleteFromStart(num, n));  # Remove the nth digit from endingprint("Number after", n,       "digit deleted from ending:",             deleteFromEnd(num, n));  # This code is contributed by chandan_jnu
// 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 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.
<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>
Number: 1234
Digit to be deleted: 3
Number after 3 digit deleted from starting: 124
Number after 3 digit deleted from ending: 134
 
Another Approach: (To convert number into string) Time complexity :O(logN) 
C++
Java
Python3
C#
PHP
Javascript
// 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 startingstatic 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 endingstatic 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 Codeint 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 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 implementation to delete nth digit# from starting with O(logN) time complexity.  # function to del1ete nth number # from startingdef fromStart(inp, del11):       inp1 = inp[0:del1 - 1];    inp2 = inp[del1:len(inp)];    return inp1 + inp2;  # function to delete nth number # from endingdef fromEnd(inp, del1):    inp1 = inp[0:len(inp) - del1];    inp2 = inp[len(inp) - del1 + 1:len(inp)];    return inp1 + inp2;  # Driver Codein1 = 1234;  # type cast input number to stringinp = 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# 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 implementation to delete nth digit// from starting with O(logN) time complexity.  // function to delete nth number from startingfunction fromStart($inp, $del) {    $inp1 = substr($inp, 0, $del - 1);    $inp2 = substr($inp, $del, strlen($inp));    return $inp1.$inp2;}  // function to delete nth number from endingfunction 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?>
<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
 
ihritik
jit_t
lancelokesh
ankthon
Chandan_Kumar
Kirti_Mangal
suresh07
mukesh07
number-digits
C++ Programs
Mathematical
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
C++ Program for QuickSort
Shallow Copy and Deep Copy in C++
delete keyword in C++
Passing a function as a parameter in C++
cin in C++
Program for Fibonacci numbers
Write a program to print all permutations of a given string
C++ Data Types
Set in C++ Standard Template Library (STL)
Coin Change | DP-7