Skip to content
Related Articles

Related Articles

Improve Article
N-th character in the string made by concatenating natural numbers
  • Difficulty Level : Easy
  • Last Updated : 24 May, 2021

Given an integer N, the task is to find the N-th character in the string made by concatenating natural numbers (Integers beginning from 1). The starting sting will be “12345678910111213..”. 
Examples
 

Input: N = 3 
Output: 3
3rd character in the string "12345678910111213.." is 3.

Input: N = 11
Output: 0
11th character in the string "12345678910111213..." is 0

 

The idea is to generate the required string until string length does exceed N.
 

  • Initialize a Null string and c=1
  • Add the c to the string by type-casting it to a character
  • If c is a single-digit number, append it to the string
  • if c is greater than 9, then store it in a temporary string and reverse it and append to the original string
  • If at any moment the string length exceeds N, then return s[n-1].

Below is the implementation of the above approach: 
 

C++




// C++ program to find the N-th character
// in the string "1234567891011.."
#include <bits/stdc++.h>
using namespace std;
 
// Function that returns the N-th character
char NthCharacter(int n)
{
    // initially null string
    string s = "";
 
    // starting integer
    int c = 1;
 
    // add integers in string
    for (int i = 1;; i++) {
 
        // one digit numbers added
        if (c < 10)
            s += char(48 + c);
 
        // more than 1 digit number, generate
        // equivalent number in a string s1
        // and concatenate s1 into s.
        else
        {
            string s1 = "";
            int dup = c;
 
            // add the number in string
            while (dup) {
                s1 += char((dup % 10) + 48);
                dup /= 10;
            }
 
            // reverse the string
            reverse(s1.begin(), s1.end());
 
            // attach the number
            s += s1;
        }
        c++;
 
        // if the length exceeds N
        if (s.length() >= n) {
            return s[n - 1];
        }
    }
}
 
// Driver Code
int main()
{
    int n = 11;
 
    cout << NthCharacter(n);
 
    return 0;
}

Java




// Java program to find the N-th character
// in the string "1234567891011.."
 
 
class GFG
{
    // Function that returns the N-th character
    static char NthCharacter(int n)
    {
        // initially null string
        String s = "";
     
        // starting integer
        int c = 1;
     
        // add integers in string
        for (int i = 1;; i++) {
     
            // one digit numbers added
            if (c < 10)
                s += Integer.toString(c);
     
            // more than 1 digit number, generate
            // equivalent number in a string s1
            // and concatenate s1 into s.
            else
            {
                String s1 = "";
                int dup = c;
     
                // add the number in string
                while (dup >0) {
                    s1 += Integer.toString(dup % 10);
                    dup /= 10;
                }
           
                // reverse the string
                StringBuilder temp = new StringBuilder();
                temp.append(s1);
                temp = temp.reverse();
                 
                // attach the number
                s += temp;
            }
            c++;
     
            // if the length exceeds N
            if (s.length() >= n) {
                return s.charAt(n - 1);
            }
        }
    }
     
    // Driver Code
    public static void main(String []args)
    {
        int n = 11;
     
        System.out.println( NthCharacter(n));
     
         
    }
 
}
 
// This article is contributed by ihritik

Python 3




# Python 3 program to find the N-th character
# in the string "1234567891011.."
 
# Function that returns the N-th character
def NthCharacter(n):
 
    # initially null string
    s = ""
 
    # starting integer
    c = 1
 
    # add integers in string
    while(True) :
 
        # one digit numbers added
        if (c < 10):
            s += chr(48 + c)
 
        # more than 1 digit number, generate
        # equivalent number in a string s1
        # and concatenate s1 into s.
        else:
            s1 = ""
            dup = c
 
            # add the number in string
            while (dup > 0):
                s1 += chr((dup % 10) + 48)
                dup //= 10
 
            # reverse the string
            s1 = "".join(reversed(s1))
 
            # attach the number
            s += s1
        c += 1
 
        # if the length exceeds N
        if (len(s) >= n):
            return s[n - 1]
 
# Driver Code
if __name__ == "__main__":
     
    n = 11
    print(NthCharacter(n))
 
# This code is contributed by ita_c

C#




// C# program to find the N-th character
// in the string "1234567891011.."
using System;
 
class GFG
{
    // Function that returns the N-th character
    static char NthCharacter(int n)
    {
        // initially null string
        String s = "";
     
        // starting integer
        int c = 1;
     
        // add integers in string
        for (int i = 1;; i++)
        {
     
            // one digit numbers added
            if (c < 10)
                s += c.ToString();
     
            // more than 1 digit number, generate
            // equivalent number in a string s1
            // and concatenate s1 into s.
            else
            {
                String s1 = "";
                int dup = c;
     
                // add the number in string
                while (dup > 0)
                {
                    s1 += (dup % 10).ToString();
                    dup /= 10;
                }
             
                // reverse the string
                String temp = reverse(s1);
                 
                // attach the number
                s += temp;
            }
            c++;
     
            // if the length exceeds N
            if (s.Length >= n)
            {
                return s[n - 1];
            }
        }
    }
     
    static String reverse(String input)
    {
        char[] a = input.ToCharArray();
        int l, r = 0;
        r = a.Length - 1;
 
        for (l = 0; l < r; l++, r--)
        {
             
            // Swap values of l and r
            char temp = a[l];
            a[l] = a[r];
            a[r] = temp;
        }
        return String.Join("", a);
    }
     
    // Driver Code
    public static void Main(String []args)
    {
        int n = 11;
     
        Console.WriteLine( NthCharacter(n));
    }
}
 
// This code is contributed by Rajput-Ji

Javascript




<script>
 
// JavaScript program to find the N-th character
// in the string "1234567891011.."
 
// Function that returns the N-th character
function NthCharacter(n)
{
    // initially null string
        let s = "";
       
        // starting integer
        let c = 1;
       
        // add integers in string
        for (let i = 1;; i++) {
       
            // one digit numbers added
            if (c < 10)
                s += c.toString();
       
            // more than 1 digit number, generate
            // equivalent number in a string s1
            // and concatenate s1 into s.
            else
            {
                let s1 = "";
                let dup = c;
       
                // add the number in string
                while (dup >0) {
                    s1 += (dup % 10).toString();
                    dup = Math.floor(dup/10);
                }
             
                // reverse the string
                s1=s1.split("").reverse().join("");
                   
                // attach the number
                s += s1;
            }
            c++;
       
            // if the length exceeds N
            if (s.length >= n) {
                return s[n-1];
            }
        }
}
 
// Driver Code
 
let n = 11;
document.write( NthCharacter(n));
 
     
 
// This code is contributed by avanitrachhadiya2155
 
</script>
Output: 
0

 

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price.

In case you wish to attend live classes with industry experts, please refer Geeks Classes Live




My Personal Notes arrow_drop_up
Recommended Articles
Page :