1 条题解
-
0
using namespace std; // 判断字符串是否为回文串 // 输入:字符串s // 输出:是回文返回true,否则false // 功能:使用双指针法从两端向中间比较字符 bool is_palindrome(string s) { int left = 0; int right = s.length() - 1; while (left < right) { // 左右指针向中间移动 if (s[left] != s[right]) return false; left++; right--; } return true; // 全部匹配则为回文 } int main() { int n; cin >> n; // 读取字符串数量 while (n--) { string s; cin >> s; // 读取当前字符串 int len = s.length(); // 总长度不足4时直接排除 if (len < 4) { cout << "No" << endl; continue; } bool found = false; // 遍历所有有效分割点(前段长度i范围:2 <= i <= len-2) for (int i = 2; i <= len - 2; ++i) { string part1 = s.substr(0, i); // 前部分子串 string part2 = s.substr(i); // 后部分子串 if (is_palindrome(part1) && is_palindrome(part2)) { // 双回文检查 found = true; break; } } cout << (found ? "Yes" : "No") << endl; } return 0; }
信息
- ID
- 5055
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 2
- 标签
- 递交数
- 40
- 已通过
- 7
- 上传者