问题描述
小U正在数偶数,从 0,2,4,6,8,10,12,...0,2,4,6,8,10,12,... 开始,依次将这些数连在一起,形成一个无穷长的字符串,例如:"0246810121416..."。小U想知道这个字符串中的第 nn 个字符是什么。
测试样例
样例1:
输入:
n = 6输出:
1
样例2:
输入:
n = 10输出:
1
样例3:
输入:
n = 15输出:
8
解题思路
- 理解序列生成规则:首先,明确序列是如何生成的。例如,本题中的序列是由偶数组成的。
 - 生成序列并构建字符串:根据序列生成规则,生成足够长的序列,并将其转换为字符串。
 - 查找目标字符:在生成的字符串中找到目标位置的字符。
 
具体步骤
- 
生成序列:
- 使用循环或递归生成序列。
 - 对于偶数序列,可以从 
0开始,每次增加2。 
 - 
构建字符串:
- 将生成的序列中的每个数字转换为字符串,并连接起来。
 - 使用字符串拼接操作(如 
+=)来构建最终的字符串。 
 - 
查找目标字符:
- 在生成的字符串中,找到目标位置的字符。
 - 注意字符串索引从 
0开始,所以目标位置的字符索引是n-1。 
 
代码实现
            
            
              cpp
              
              
            
          
          #include <iostream>
#include <string>
using namespace std;
int solution(int n) {
    string result = "";
    int num = 0;
    
    // 生成偶数并连接成字符串
    while (result.length() < n) {
        result += to_string(num);
        num += 2;
    }
    
    // 返回第 n 个字符
    return result[n - 1] - '0'; // 注意:字符串索引从 0 开始
}
int main() {
    cout << (solution(6) == 1) << endl;
    cout << (solution(10) == 1) << endl;
    cout << (solution(15) == 8) << endl;
    return 0;
}
        关键步骤解释
- 
生成偶数并连接成字符串:
- 使用 
while循环,直到result字符串的长度超过n。 - 每次循环中,将当前的偶数 
num转换为字符串并追加到result中。 - 然后将 
num增加 2,以生成下一个偶数。 
 - 使用 
 - 
返回第
n个字符:- 由于字符串索引从 0 开始,所以第 
n个字符的索引是n-1。 - 将字符转换为数字并返回。
 
 - 由于字符串索引从 0 开始,所以第 
 
总结
- 理解序列生成规则:明确序列是如何生成的。
 - 生成序列并构建字符串:根据规则生成序列,并将其转换为字符串。
 - 查找目标字符:在生成的字符串中找到目标位置的字符。