按照匹配规则,双指针检测

#include <iostream>
#include<string>
using namespace std;
void solve(){
    string s;
    cin>>s;
    int n=s.size();
    int l=0,r=n-1;
    bool valid=true;
    while(l<=r&&valid){
        if(s[l]==s[r])l++,r--;
        else if(r-1>=l&&(s[l]=='w'&&s[r]=='v'&&s[r-1]=='v'||s[l]=='m'&&(s[r]=='n'||s[r]=='u')&&(s[r-1]=='n'||s[r-1]=='u')))l++,r-=2;
        else if(l+1<=r&&(s[l]=='v'&&s[l+1]=='v'&&s[r]=='w'||(s[l]=='n'||s[l]=='u')&&(s[l+1]=='n'||s[l+1]=='u')&&s[r]=='m'))l+=2,r--;
        else if(l+1<=r&&s[l]=='u'&&s[r]=='n'||s[l]=='n'&&s[r]=='u')l++,r--;
        else if(l+1<=r&&(s[l]=='b'||s[l]=='d'||s[l]=='q'||s[l]=='p')&&(s[r]=='b'||s[r]=='d'||s[r]=='q'||s[r]=='p'))l++,r--;
        else valid=false;
    }
    if(valid)cout<<"YES"<<endl;
    else cout<<"NO"<<endl;
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int t;
    cin>>t;
    while(t--)solve();
    return 0;
}