小U数数问题

问题描述

小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

解题思路

  1. 理解序列生成规则:首先,明确序列是如何生成的。例如,本题中的序列是由偶数组成的。
  2. 生成序列并构建字符串:根据序列生成规则,生成足够长的序列,并将其转换为字符串。
  3. 查找目标字符:在生成的字符串中找到目标位置的字符。

具体步骤

  1. 生成序列

    • 使用循环或递归生成序列。
    • 对于偶数序列,可以从 0 开始,每次增加 2
  2. 构建字符串

    • 将生成的序列中的每个数字转换为字符串,并连接起来。
    • 使用字符串拼接操作(如 +=)来构建最终的字符串。
  3. 查找目标字符

    • 在生成的字符串中,找到目标位置的字符。
    • 注意字符串索引从 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;
}

关键步骤解释

  1. 生成偶数并连接成字符串

    • 使用 while 循环,直到 result 字符串的长度超过 n
    • 每次循环中,将当前的偶数 num 转换为字符串并追加到 result 中。
    • 然后将 num 增加 2,以生成下一个偶数。
  2. 返回第 n 个字符

    • 由于字符串索引从 0 开始,所以第 n 个字符的索引是 n-1
    • 将字符转换为数字并返回。

总结

  • 理解序列生成规则:明确序列是如何生成的。
  • 生成序列并构建字符串:根据规则生成序列,并将其转换为字符串。
  • 查找目标字符:在生成的字符串中找到目标位置的字符。
相关推荐
不吃土豆的马铃薯5 分钟前
Spdlog 入门:日志记录器与日志槽基础详解
服务器·开发语言·c++·c·日志·spdlog
此生决int9 分钟前
算法从入门到精通——前缀和
c++·算法·蓝桥杯
大大杰哥25 分钟前
leetcode hot100(4)矩阵
算法·leetcode·矩阵
Fuyo_111929 分钟前
C++中的活字印刷术——模板·初阶
开发语言·c++·笔记
小白|29 分钟前
cmake:昇腾CANN构建系统完全指南
java·c++·算法
nebula-AI30 分钟前
人工智能导论:模型与算法(未来发展与趋势)
人工智能·神经网络·算法·机器学习·量子计算·automl·类脑计算
王老师青少年编程30 分钟前
2026年全国青少年信息素养大赛“算法应用主题赛”(初赛)【C++考点大纲】(全场景、组别):文末附备考秘籍!
c++·全国青少年信息素养大赛·初赛·2026年·算法应用主题赛·考点大纲
炽烈小老头31 分钟前
【每天学习一点算法 2026/05/21】课程表
学习·算法
Season45033 分钟前
C++之模板元编程(前置知识 constexpr)
开发语言·c++
luoganttcc35 分钟前
大模型是否即将到达算法极限
算法