所有人都想要AK

· · 个人记录

首先,如果字符串长度为 1 的情况下一定是回文串。

容易想到,若该字符串为 "ka" 或者 "ak" 是不能通过操作变成回文串的,其他长度为 2 的情况下本身就是回文串。

现在,让我们来看看一般形式下的字符串。

若一个字符串以字母 a 开头并以 a 结尾,那么我们一定可以将该字符串转换为 ak..ka 的形式。

若一个字符串以字母 k 开头,那么我们一定可以将该字符串转换为 ka..ak 的形式。

若一个字符串以字母 a 开头并以 k 结尾,那么一定无法通过操作变成回文串,因为第一个字母 a 和最后一个字母 k 无法被改变。

综上所述,也就是开头为 a 并且结尾为 k 和 "ka" 无法通过操作变成回文串,其他的都可以。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void solve()
{
    int n;
    string s;
    cin >> n >> s;
    if ((s[0] == 'a' && s[n - 1] == 'k') || (s == "ka"))
        cout << "NO\n";
    else
        cout << "YES\n";
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    solve();
    return 0;
}