27、<简单>国王的魔镜

📅 2026/7/6 1:20:22 👁️ 阅读次数 📝 编程学习
27、<简单>国王的魔镜

#include <iostream> #include <string> #include <algorithm> using namespace std; int main() { cout << "功能说明:输入最终项链字符串,求出原始项链最小长度" << endl; cout << "输入规则:仅大写英文字母,字符串长度不超过100" << endl; cout << "请输入最终项链字符串:"; string s; cin >> s; // 循环逆向拆分:只要当前字符串长度是偶数,且后半段等于前半段反转,就缩小一半 while (true) { int len = s.size(); // 长度奇数,无法再拆分,退出循环 if (len % 2 != 0) break; int half = len / 2; string front = s.substr(0, half); string back = s.substr(half, half); // 翻转前半段 reverse(front.begin(), front.end()); // 后半段 == 前半段反转,说明可以拆分成更小的原始串 if (front == back) { s = s.substr(0, half); } else { break; } } cout << "\n原始项链最小长度:" << s.size() << endl; return 0; }