给定一个整数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现场课程美国》。