《小U的数字插入问题解析》 题目: 小U的数字插入问题 问题描述 小U手中有两个数字 a 和 b。第一个数字是一个任意的正整数,而第二个数字是一个非负整数。她的任务是将第二个数字 b 插入到第一个数字 a 的某个位置,以形成一个最大的可能数字。 你需要帮助小U找到这个插入位置,输出插入后的最大结果。 测试样例 样例1: 输入:a = 76543, b = 4 输出:765443 样例2: 输入:a = 1, b = 0 输出:10 样例3: 输入:a = 44, b = 5 输出:544 样例4: 输入:a = 666, b = 6 输出:6666 解题代码: #include #include using namespace std;
int solution(int a, int b) { // 将数字转换为字符串 string strA = to_string(a); string strB = to_string(b); // 初始化最大结果 string maxResult = strA; // 遍历插入位置 for (int i = 0; i <= strA.length(); i++) { // 尝试在位置 i 插入 strB string newResult = strA.substr(0, i) + strB + strA.substr(i); // 比较新生成的字符串与当前最大字符串 if (newResult > maxResult) { maxResult = newResult; } } // 将最大字符串转换回整数并返回 return stoi(maxResult); }
int main() { cout << (solution(76543, 4) == 765443) << endl; cout << (solution(1, 0) == 10) << endl; cout << (solution(44, 5) == 544) << endl; cout << (solution(666, 6) == 6666) << endl; return 0; } 一、解题思路
本题旨在将非负整数 b 插入正整数 a 的某个位置以获取最大数字,核心思路是利用字符串操作遍历所有可能插入位置并比较大小。把数字 a 和 b 先转换为字符串形式,方便在不同位置插入操作。通过循环依次尝试在 a 字符串的每个字符前(包括开头和结尾,共 strA.length() + 1 个位置)插入 b 对应的字符串 strB ,生成新字符串 newResult ,再与当前记录最大结果的字符串 maxResult 比较,保留较大值,循环结束后, maxResult 即为所求最大数字对应的字符串,最后转回整数输出。
二、代码详解
1. 数字转字符串: string strA = to_string(a); 和 string strB = to_string(b); ,借助 to_string 函数(C++ 11特性),轻松将整型变量 a 、 b 转为字符串类型,便于后续按字符位置灵活处理。 2. 初始化与循环遍历: string maxResult = strA; 先设最大结果初始值为 a 对应的字符串,之后 for (int i = 0; i <= strA.length(); i++) 循环,涵盖 a 字符串所有可插入点,从开头到结尾依次操作。 3. 插入生成新串并比较: string newResult = strA.substr(0, i) + strB + strA.substr(i); 里, substr 函数按索引提取子串,前半部分提取 0 到 i - 1 字符,拼接 strB 再加上后半部分 i 位置起剩余字符,形成新插入组合。 if (newResult > maxResult) 依字典序比较字符串大小,若 newResult 更大,则更新 maxResult 。 4. 结果转换返回:循环结束, return stoi(maxResult); 用 stoi 函数把最终最大结果字符串转回整型返回,完成任务。
三、总结知识点
1. 字符串与数字转换: to_string 和 stoi 函数使用频繁,实现整型与字符串型相互转化,应对需精细处理数字每位字符场景,如本题按位插入操作。 2. 字符串操作函数: substr 按起止索引截字符串子串,助于灵活拼接、重组字符串,是文本处理常用操作,构建新数字组合不可或缺。 3. 遍历与比较逻辑:遍历数组、字符串常见,循环结合条件判断找最优解,这里遍历插入点并比较字符串大小,体现暴力求解思路,穷举可能获最大结果,虽简单直接,但要留意效率,大规模数据时复杂度高,可按需优化,像先分析数字特征缩小区间再遍历。此题目融合基础类型转换、字符串处理、逻辑判断,是编程基础运用典范,助夯实代码能力。