1 条题解
-
0
问题分析
本题要求处理包含交错韵(Schuttelreim)的诗歌输入。对于每组输入的两行诗,第一行包含用 < 和 > 标记的子字符串,第二行以 ... 结尾。需要将第一行的括号标记去掉得到新的第一行输出,同时将第二行的 ... 替换为第一行中括号内子字符串按特定顺序组合的结果。
解题思路
读取输入:首先读取输入的组数 n,然后循环 n 次,每次读取两行诗。 处理第一行诗:遍历第一行诗,去掉 < 和 > 标记,同时提取出括号内的子字符串 s2 和 s4,以及括号外的子字符串 s1、s3 和 s5。 处理第二行诗:将第二行诗中的 ... 替换为 的结果。 输出结果:输出处理后的第一行诗和第二行诗。
cpp
#include <iostream> #include <string> void processSchuttelreim(const std::string& line1, const std::string& line2) { std::string s1, s2, s3, s4, s5; bool inBracket = false; int bracketCount = 0; for (char c : line1) { if (c == '<') { inBracket = true; continue; } if (c == '>') { inBracket = false; bracketCount++; continue; } if (inBracket) { if (bracketCount == 0) { s2 += c; } else { s4 += c; } } else { if (bracketCount == 0) { s1 += c; } else if (bracketCount == 1) { s3 += c; } else { s5 += c; } } } std::cout << s1 << s2 << s3 << s4 << s5 << std::endl; std::string result = line2; size_t pos = result.find("..."); if (pos != std::string::npos) { result.replace(pos, 3, s4 + s3 + s2 + s5); } std::cout << result << std::endl;
}
int main() { int n; std::cin >> n; std::cin.ignore(); for (int i = 0; i < n; ++i) { std::string line1, line2; std::getline(std::cin, line1); std::getline(std::cin, line2); processSchuttelreim(line1, line2); } return 0;
}
- 1
信息
- ID
- 918
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 6
- 已通过
- 1
- 上传者