📜  通过连接自然数构成的字符串的第N个字符

📅  最后修改于: 2021-06-26 15:38:08             🧑  作者: Mango

给定一个整数N,任务是查找通过连接自然数(从1开始的整数)而构成的字符串的第N个字符。起始字符串为“ 12345678910111213 ..”。

例子

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

这个想法是生成所需的字符串,直到字符串长度超过N。

  • 初始化一个Null字符串,并且c = 1
  • 通过将类型转换为字符将c添加到字符串
  • 如果c是一个数字,则将其附加到字符串
  • 如果c大于9,则将其存储在临时字符串,并将其反转并追加到原始字符串
  • 如果任何时候字符串长度超过N,则返回s [n-1]。

下面是上述方法的实现:

C++
// C++ program to find the N-th character
// in the string "1234567891011.."
#include 
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


输出:
0

如果您希望与行业专家一起参加现场课程,请参阅《 Geeks现场课程》和《 Geeks现场课程美国》。