1 条题解
-
0
练68.1 输出亲朋字符串
解题思路
新串第i字符为原s[i]与s[(i+1)%L]的ASCII值之和转成字符。用新串保存,避免覆盖后影响下一位置。
正确性说明
依题目给出的对应关系逐项处理,位置与原输入保持明确对应。每一步完成当前项的全部贡献,结束后得到所有位置或字符的目标结果。
易错点
末字符要加原首字符;不是拼接两个编码文本。
复杂度
时间O(L),空间O(L)。
参考代码(C++11)
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); string s; getline(cin, s); string t = s; for (size_t i = 0; i < s.size(); i++) t[i] = char(static_cast<unsigned char>(s[i]) + static_cast<unsigned char>(s[(i + 1) % s.size()])); cout << t << "\n"; return 0; }
- 1