必AC(求点赞)
2026-05-02 19:50:41
发布于:北京
1阅读
0回复
0点赞
我们来一步步分析这道“亲朋字符串”问题。
🧠 题目理解
给定一个字符串 s,长度 ≥ 2,≤ 100。
构造一个新的字符串 s1(亲朋字符串),规则如下:
前 n-1 个字符(n 是 s 的长度):
s1[i] = s[i] + s[i+1](ASCII 值相加,结果作为新字符的 ASCII 码)
其中 i 从 0 到 n-2(即从第一个字符到倒数第二个)
最后一个字符:
s1[n-1] = s[n-1] + s[0](最后一个字符 + 第一个字符的 ASCII 值)
所有加法都是 ASCII 值相加,结果直接转为对应字符。
🔢 样例解析
输入:"1234"
'1' → ASCII 49
'2' → 50
'3' → 51
'4' → 52
计算:
s1[0] = '1' + '2' = 49 + 50 = 99 → 'c'
s1[1] = '2' + '3' = 50 + 51 = 101 → 'e'
s1[2] = '3' + '4' = 51 + 52 = 103 → 'g'
s1[3] = '4' + '1' = 52 + 49 = 101 → 'e'
结果:"cege" ✅
✅ 解题步骤
读入字符串 s。
创建一个空字符串 result。
遍历 i 从 0 到 len-2:
将 s[i] + s[i+1] 的 ASCII 和转为字符,加入结果。
最后加上 s[len-1] + s[0] 对应的字符。
输出结果。
不废话了,上代码!
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
cin >> s;
string result = "";
int n = s.length();
// 前 n-1 个字符:s[i] + s[i+1]
for (int i = 0; i < n - 1; i++) {
char c = s[i] + s[i + 1];
result += c;
}
// 最后一个字符:s[n-1] + s[0]
char last = s[n - 1] + s[0];
result += last;
cout << result << endl;
return 0;
}
这里空空如也








有帮助,赞一个