题目描述
Alice 不喜欢数字 4,偏爱 8。任务是将给定整数中的所有 4 替换为 8,若不存在 4 则保持不变。
输入格式
输入一行,一个整数 A,表示替换前的数。
输出格式
输出一行,包含一个整数 B,表示替换后的数。
样例
样例 1
输入:
8459045
输出:
8859085
样例 2
输入:
123
输出:
123
数据范围
- 0 ≤ A ≤ 10^9
解题思路
这道题看似简单,但要注意整型溢出的风险。虽然题目说 A 在 int 范围内,但为了稳妥处理每一位数字,直接使用字符串读取是最直观的方案。这样不仅能避免数值转换的开销,还能方便地逐字符判断和替换。
实际运行时,如果直接用 int 读入再转字符串,可能会遇到前导零丢失的问题(虽然本题输入是整数通常无前导零),而直接读字符串则完全保留了原始形态。对于初学者来说,理解 string 类型作为容器处理数字的优势很重要。
代码实现
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
cin >> s;
for (char &c : s) {
if (c == '4') c = '8';
}
cout << s << endl;
return 0;
}
关键点
这里使用了引用遍历 char &c,可以直接修改字符串中的字符,效率比拼接新字符串更高。注意循环条件中不需要额外判断长度,STL 会自动处理。这种写法在竞赛或面试中非常常见,建议熟练掌握。


