K-th digit from the end of a number

Given an integer N, the task is to find the Kth digit from the end of an integer N. If the Kth digit is not present, then print -1.
Examples:
Input: N = 2354, K = 2
Output: 5Input: N = 1234, K = 1
Output: 4
Naive Approach: This simplest approach to solve this problem is converting the integer N to string. Follow the steps below to solve this problem:
- If K is less than equal to 0, then print -1 and return.
- Convert N into string and store in temp.
- If K is greater than size of temp, then print -1, otherwise print K character from last.
Below is the implementation of the above approach:
C++
// c++ program for the above approach#include <bits/stdc++.h>using namespace std;// Function to find the kth digit// from last in an integer nvoid kthDigitFromLast(int n, int k){ // If k is less than equal to 0 if (k <= 0) { cout << -1 << endl; return; } // Convert integer into string string temp = to_string(n); // If k is greater than length of the // string temp if (k > temp.length()) { cout << -1 << endl; } // Print the k digit from last else { cout << temp[temp.length() - k] - '0'; }}// Driver codeint main(){ // Given Input int n = 2354; int k = 2; // Function call kthDigitFromLast(n, k);} |
Java
// Java program for the above approachimport java.io.*;class GFG{ // Function to find the kth digit// from last in an integer n public static void kthDigitFromLast(int n, int k){ // If k is less than equal to 0 if (k <= 0) { System.out.println(-1); return; } // Convert integer into string String temp = Integer.toString(n); // If k is greater than length of the // string temp if (k > temp.length()) { System.out.println(-1); } // Print the k digit from last else { int index = temp.length() - k; int res = temp.charAt(index) - '0'; System.out.println(res); }}// Driver codepublic static void main(String[] args){ // Given Input int n = 2354; int k = 2; // Function call kthDigitFromLast(n, k);}}// This code is contributed by Potta Lokesh |
Python3
# Python3 program for the above approach# Function to find the kth digit# from last in an integer ndef kthDigitFromLast(n, k): # If k is less than equal to 0 if (k <= 0): print(-1) return # Convert integer into string temp = str(n) # If k is greater than length of the # temp if (k > len(temp)): print(-1) # Print the k digit from last else: print(ord(temp[len(temp) - k]) - ord('0'))# Driver codeif __name__ == '__main__': # Given Input n = 2354 k = 2 # Function call kthDigitFromLast(n, k)# This code is contributed by mohit kumar 29 |
C#
// C# program for the above approachusing System;using System.Collections.Generic;class GFG{ // Function to find the kth digit// from last in an integer nstatic void kthDigitFromLast(int n, int k){ // If k is less than equal to 0 if (k <= 0) { Console.Write(-1); return; } // Convert integer into string string temp = n.ToString(); // If k is greater than length of the // string temp if (k > temp.Length) { Console.WriteLine(-1); } // Print the k digit from last else { Console.Write(temp[temp.Length - k] - 48); }}// Driver codepublic static void Main(){ // Given Input int n = 2354; int k = 2; // Function call kthDigitFromLast(n, k);}}// This code is contributed by SURENDRA_GANGWAR |
Javascript
<script>// JavaScript program for the above approach // Function to find the kth digit// from last in an integer nfunction kthDigitFromLast(n, k){ // If k is less than equal to 0 if (k <= 0) { document.write(-1); return; } // Convert integer into string var temp = String(n); // If k is greater than length of the // string temp if (k > temp.length) { document.write(-1); } // Print the k digit from last else { var req = temp.charAt(temp.length - k) // Convert to number again document.write(Number(req)); }}// Driver code// Given Inputvar n = 2354;var k = 2;// Function callkthDigitFromLast(n, k);// This code is contributed by Potta Lokesh</script> |
5
Time complexity: O(d), where d is the number of digits in number N.
Auxiliary Space: O(d)
Efficient Approach: This problem can be solved by iterating over the digits of the number N. Follow the steps below to solve this problem:
- If K is less than equal to 0, then print -1 and return.
- Iterate while N and K-1 are greater than 0 :
- Update N as N/10 and decrement K by 1.
- If N is 0, then print -1, otherwise print N%10.
Below is the implementation of the above approach:
C++
// c++ program for the above approach#include <bits/stdc++.h>using namespace std;// Function to find the kth digit// from last in an integer nvoid kthDigitFromLast(int n, int k){ // If k is less than equal to 0 if (k <= 0) { cout << -1 << endl; return; } // Divide the number n by 10 // upto k-1 times while ((k - 1) > 0 && n > 0) { n = n / 10; k--; } // If the number n is equal 0 if (n == 0) { cout << -1 << endl; } // Print the right most digit else { cout << n % 10 << endl; }}// Driver codeint main(){ // Given Input int n = 2354; int k = 2; // Function call kthDigitFromLast(n, k);} |
Java
// Java program for the above approachimport java.io.*;class GFG{ // Function to find the kth digit// from last in an integer npublic static void kthDigitFromLast(int n, int k){ // If k is less than equal to 0 if (k <= 0) { System.out.println(-1); return; } // Divide the number n by 10 // upto k-1 times while ((k - 1) > 0 && n > 0) { n = n / 10; k--; } // If the number n is equal 0 if (n == 0) { System.out.println(-1); } // Print the right most digit else { System.out.println(n % 10); }}// Driver codepublic static void main(String[] args){ int n = 2354; int k = 2; // Function call kthDigitFromLast(n, k);}}// This code is contributed by Potta Lokesh |
Python3
# Python program for the above approach# Function to find the kth digit# from last in an eger ndef kthDigitFromLast( n, k): # If k is less than equal to 0 if (k <= 0): print("-1") return # Divide the number n by 10 # upto k-1 times while ((k - 1) > 0 and n > 0): n = n / 10 k -= 1 # If the number n is equal 0 if (n == 0): print("-1") # Pr the right most digit else: print(int(n % 10 )) # Driver codeif __name__ == '__main__': # Given Input n = 2354 k = 2 # Function call kthDigitFromLast(n, k) # this code is contributed by shivanisinghss2110 |
C#
// C# program for the above approachusing System;class GFG{ // Function to find the kth digit// from last in an integer npublic static void kthDigitFromLast(int n, int k){ // If k is less than equal to 0 if (k <= 0) { Console.Write(-1); return; } // Divide the number n by 10 // upto k-1 times while ((k - 1) > 0 && n > 0) { n = n / 10; k--; } // If the number n is equal 0 if (n == 0) { Console.Write(-1); } // Print the right most digit else { Console.Write(n % 10); }}// Driver codepublic static void Main(String[] args){ int n = 2354; int k = 2; // Function call kthDigitFromLast(n, k);}}// This code is contributed by shivanisinghss2110 |
Javascript
<script>// JavaScript program for the above approach// Function to find the kth digit// from last in an integer nfunction kthDigitFromLast(n, k) { // If k is less than equal to 0 if (k <= 0) { document.write(-1); return; } // Divide the number n by 10 // upto k-1 times while ((k - 1) > 0 && n > 0) { n = n / 10; k--; } // If the number n is equal 0 if (n == 0) { document.write(-1); } // Print the right most digit else { document.write(parseInt(n % 10)); }}// Driver code// Given Inputvar n = 2354;var k = 2;// Function callkthDigitFromLast(n, k);// This code is contributed by Potta Lokesh</script> |
5
Time complexity: O(d), where d is the number of digits in number N.
Auxiliary Space: O(1)
Efficient Approach: This problem can be solved using power function. Follow the steps below to solve this problem:
- If K is less than equal to 0, then print -1 and return.
- Initialize a variable say, divisor as pow(10, K-1).
- If divisor is greater than N, then print -1, otherwise print (N/divisor) %10.
Below is the implementation of the above approach:
C++
// c++ program for the above approach#include <bits/stdc++.h>using namespace std;// Function to find the kth digit// from last in an integer nvoid kthDigitFromLast(int n, int k){ // If k is less than equal to 0 if (k <= 0) { cout << -1 << endl; return; } // Calculate kth digit using power function int divisor = (int)pow(10, k - 1); // If divisor is greater than n if (divisor > n) { cout << -1 << endl; } // Otherwise print kth digit from last else { cout << (n / divisor) % 10 << endl; }}// Driver codeint main(){ // Given Input int n = 2354; int k = 2; // Function call kthDigitFromLast(n, k);} |
Java
// Java program for the above approachimport java.io.*;class GFG{ // Function to find the kth digit// from last in an integer npublic static void kthDigitFromLast(int n, int k){ // If k is less than equal to 0 if (k <= 0) { System.out.println(-1); return; } // Calculate kth digit using power function int diviser = (int)Math.pow(10, k - 1); // If diviser is greater than n if (diviser > n) { System.out.println(-1); } // Otherwise print kth digit from last else { System.out.println((n / diviser) % 10); }}// Driver codepublic static void main(String[] args){ int n = 2354; int k = 2; // Function call kthDigitFromLast(n, k);}}// This code is contributed by Potta Lokesh |
Python3
# Python program for the above approach# Function to find the kth digit# from last in an integer ndef kthDigitFromLast(n, k): # If k is less than equal to 0 if (k <= 0): print("-1") return # Calculate kth digit using power function divisor = int(pow(10, k - 1)) # If divisor is greater than n if (divisor > n): print("-1") # Otherwise print kth digit from last else: print(int((n / divisor) % 10)) # Given Inputn = 2354;k = 2;# Function callkthDigitFromLast(n, k);# This code is contributed by SoumikMondal |
C#
// C# program for the above approachusing System;class GFG{ // Function to find the kth digit// from last in an integer npublic static void kthDigitFromLast(int n, int k){ // If k is less than equal to 0 if (k <= 0) { Console.Write(-1); return; } // Calculate kth digit using power function int diviser = (int)Math.Pow(10, k - 1); // If diviser is greater than n if (diviser > n) { Console.Write(-1); } // Otherwise print kth digit from last else { Console.Write((n / diviser) % 10); }}// Driver codepublic static void Main(String[] args){ int n = 2354; int k = 2; // Function call kthDigitFromLast(n, k);}}// This code is contributed by shivanisinghss2110 |
Javascript
<script>// JavaScript program for the above approachfunction kthDigitFromLast(n, k) { // If k is less than equal to 0 if (k <= 0) { document.write(-1); return; } // Calculate kth digit using power function var diviser = parseInt(Math.pow(10, k - 1)); // If diviser is greater than n if (diviser > n) { document.write(-1); } // Otherwise print kth digit from last else { document.write(parseInt((n / diviser) % 10)); }}// Driver code// Given Inputvar n = 2354;var k = 2;// Function callkthDigitFromLast(n, k);// This code is contributed by Potta Lokesh</script> |
5
Time complexity: O(log(K)), where d is the number of digits in number N. This time complexity is due to the calculation of power of 10 using power function.
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



