• G. 蚂蚁的镜像串


    单点时限: 1.0 sec

    内存限制: 512 MB

    一只聪明的蚂蚁在学习了回文串之后,一直觉得回文串不够优美,所以它决定自己定义一种新的字符串——镜像串

    所谓镜像串,就是对一个字符串进行一整个完全的翻转后,得到的新字符串与原字符串相同,也就是说左右镜像之后的字符串和原串相同。例如:AA就是一个镜像串,bb不是镜像串

    现在给你一个字符串S,请你快速的判断字符串S是不是一个镜像串

    字符串中出现的字母字体如下表

    输入格式

    第一行一个整数T  (1T100)代表有T组输入

    接下来T行,每行输入一个长度小于等于105的字符串S 
    保证每个字符串只包含大小写字母

    输出格式

    对于每组输入,判断S是否为镜像串

    如果是,输出”YES”。否则输出”NO”。

    每组输出占一行

    样例

    input
    5
    QAQ
    TAT
    oUo
    oVo
    XoX
    
    output
    NO
    YES
    YES
    YES
    YES
    

    提示

    mm,nn,uu也是镜像串

     这个题目的坑就是 bd  db  pq 和qp是镜像串 其他的就是,如果是奇数的话,必须找到中间的那个字符是否对称,如果不对称的话,,直接pass掉
    AC代码:
    #include<iostream>
    #include<string>
    using namespace std;
    typedef long long ll;
    int check(char x,char y){
        if(x=='A'&&y=='A'||x=='O'&&y=='O'||x=='T'&&y=='T'){
            return 1;
        }
        if(x=='H'&&y=='H'||x=='U'&&y=='U'||x=='V'&&y=='V'||x=='W'&&y=='W'){
            return 1;
        }
        if(x=='I'&&y=='I'||x=='X'&&y=='X'||x=='Y'&&y=='Y'||x=='i'&&y=='i'||x=='l'&&y=='l'){
            return 1;
        }
        if(x=='M'&&y=='M'||x=='m'&&y=='m'||x=='n'&&y=='n'||x=='o'&&y=='o'||x=='u'&&y=='u'){
            return 1;
        }
        if(x=='v'&&y=='v'||x=='w'&&y=='w'||x=='x'&&y=='x'){
            return 1;
        }
        if(x=='b'&&y=='d'||x=='d'&&y=='b')
            return 1;
        if(x=='p'&&y=='q'||x=='q'&&y=='p')
            return 1;
        return 0;
    }
    int judge(char s){
        
        if(s=='A'||s=='O'||s=='T'||s=='H'||s=='U'||s=='V'||s=='w'||s=='W'||s=='I'||s=='X')
            return 1;
        if(s=='Y'||s=='i'||s=='l'||s=='M'||s=='m'||s=='n'||s=='o'||s=='u'||s=='v'||s=='x')
            return 1;
        return 0;
    }
    int main(){
        int t;
        cin>>t;
        while(t--){
            string a;
            cin>>a;
            int x=0,y=a.size()-1;
            int flag=0;
            while(x!=y){
                if(check(a[x],a[y])){
                    x++;
                    y--;
                }
                else{
                    flag=1;
                    break;
                }
            }
            
            if(a.size()%2!=0){
                if(judge(a[a.size()/2])!=1){
                    flag=1;
                }
            }
            
            if(flag) puts("NO");
            else puts("YES"); 
        }    
        
        return 0;
    }
  • 相关阅读:
    自定义CollectionView实现流式布局和动态图片的展现
    Java设计模式之观察者模式
    HashMap工作原理
    SpringBoot 实现多线程
    十大排序算法
    IDEA集成 plant uml 画图工具
    解决国内访问github速度慢的问题
    SpringBoot整合JWT Token
    SpringBoot在idea中配置热部署
    Spring-Security教程【一】简单的登录认证
  • 原文地址:https://www.cnblogs.com/Accepting/p/11297250.html
Copyright © 2020-2023  润新知