日志

个字符串是回文串,当且仅当该字符串从前往后读和从后往前读是⼀样的,例如aabaa和ccddcc都是回⽂串, 但abcd不是。 乎乎有 n 个仅包含小写字母的字符串,他想请你编写程序判断每个字符串是否由两个长度至少为 2的回文串前后拼接而成。、

#include <bits/stdc++.h>

using namespace std;

bool is_palindrome(const string& s) {

int left = 0;

int right = s.size() - 1;

while (left < right) {

if (s[left] != s[right]) {

return false;

}

left++;

right--;

}

return true;

}

bool can_be_split_into_two_palindromes(const string& s) {

int n = s.size();

for (int i = 2; i <= n - 2; ++i) {

if (is_palindrome(s.substr(0, i)) && is_palindrome(s.substr(i))) {

return true;

}

}

return false;

}

int main() {

int n;

cin >> n;

vector<string> strings(n);

for (int i = 0; i < n; ++i) {

cin >> strings[i];

}

for (const string& s : strings) {

if (can_be_split_into_two_palindromes(s)) {

cout << "Yes" << endl;

} else {

cout << "No" << endl;

}

}

return 0;

}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务