CodeForces - 420A (字符对称问题)

Start Up

Time Limit: 1000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u

Submit Status

Description

Recently, a start up by two students of a state university of city F gained incredible popularity. Now it‘s time to start a new company. But what do we call it?

The market analysts came up with a very smart plan: the name of the company should be identical to its reflection in a mirror! In other words, if we write out the name of the company on a piece of paper in a line (horizontally, from left to right) with large English letters, then put this piece of paper in front of the mirror, then the reflection of the name in the mirror should perfectly match the line written on the piece of paper.

There are many suggestions for the company name, so coming up to the mirror with a piece of paper for each name wouldn‘t be sensible. The founders of the company decided to automatize this process. They asked you to write a program that can, given a word, determine whether the word is a ‘mirror‘ word or not.

Input

The first line contains a non-empty name that needs to be checked. The name contains at most 105 large English letters. The name will be written with the next sans serif font:

Output

Print ‘YES‘ (without the quotes), if the given name matches its mirror reflection. Otherwise, print ‘NO‘ (without the quotes).

Sample Input

Input

AHA

Output

YES

Input

Z

Output

NO

Input

XO

Output

NO

Source

Coder-Strike 2014 - Finals (online edition, Div. 1)

输入一个字符串,如果字符串中的字符对称,比如长度为5的c[0]c[4]一样,c[1]c[3]一样,并且串中所有字符都是中间对称的,输出YES。

#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
int main()
{
    char c[100050];
    int i,n;
    while(cin>>c)
    {
        int len=strlen(c);
        int flag=0;
        for(i=0;i<=len/2;i++)
        if(c[i]!=c[len-1-i]||(c[i]!=‘A‘&&c[i]!=‘H‘&&c[i]!=‘I‘&&c[i]!=‘M‘&&c[i]!=‘O‘&&c[i]!=‘T‘&&c[i]!=‘U‘&&c[i]!=‘V‘&&c[i]!=‘W‘&&c[i]!=‘X‘&&c[i]!=‘Y‘))
        {
            flag=1;
            break;
        }
    if(flag)
    cout<<"NO"<<endl;
    else
    cout<<"YES"<<endl;

    }
    return 0;
}
时间: 2024-12-18 20:22:57

CodeForces - 420A (字符对称问题)的相关文章

通过图片对比带给你不一样的KMP算法体验

KMP 算法,俗称“看毛片”算法,是字符串匹配中的很强大的一个算法,不过,对于初学者来说,要弄懂它确实不易. 笔者认为,KMP 算法之所以难懂,很大一部分原因是很多实现的方法在一些细节的差异.体现在几个方面: next 数组,有的叫做“失配函数”,其实是一个东西: next 数组中,有的是以下标为 0 开始的,有的是以 1 开始的: KMP 主算法中,当发生失配时,取的 next 数组的值也不一样!就这样,各说各的,乱的很! 所以,在阐述我的理解之前,我有必要说明一下,我是用 next 数组的,

KMP算法中的next[]数组

KMP算法最难懂的就是next[]数组的求法. 用一个例子来解释,下面是一个子串的next数组的值,可以看到这个子串的对称程度很高,所以next值都比较大. 位置i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 前缀next[i] 0 0 0 0 1 2 3 1 2 3 4 5 6 7 4 0 子串 a g c t a g c a g c t a g c t g 申明一下:下面说的对称不是中心对称,而是中心字符块对称,比如不是abccba,而是abcabc这种对称.

[BZOJ 3160] 万径人踪灭

题意 给定一个长度为 n , 由 'a', 'b' 组成的字符串 S . 问有多少个子序列, 满足: ① 坐标对称. ② 字符对称. ③ 不连续. n <= 100000 . 分析 坐标对称, 则要满足对应坐标的值相同. 满足①② 的所有用 FFT 求. 满足①②!③ 的所有用 Manacher 求. 实现 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 #include <cc

iMessenger 2.0.14.0801简述

有些梦,看似遥不可及.但并非不能实现,仅仅要你足够的强!!.人力有时而穷,所以我们可能还须要一些热心人的帮助.这个人可能就是你. 四年来,我们一直在努力,从未放弃. 在我们做好一件事之前.我们永远不知道你这样做的意义.但我们一如既往的坚持.所以! 结果非常意外! 梦想和现实的距离就是心到手的距离,或许我们手中的现实和我们心中的梦想不同. 我们不知道我们所谓的坚持一開始到底意欲何为,但终于当你坚持下去后你发现心与手越来越近. 当产品本身和市场无关时,我们选择了站在产品一方. 先进的技术方案: 不管

字符串匹配算法KMP详细解释——深入理解

1. 前言 字符串匹配是一个经典算法问题,展开来讲各类问题多达几十种,有名称的算法也不下三十种,所以需要深入学习的东西有很多.这次我们来探讨一个最简单的问题,假设现在随机输入一个长度为m的主串T,另外输入一个长度为n(n≤m)的字符串P,我们来判断字符串P是否是主串T的一个子串(即能否从T中随机取出与P同长的一段字符串,与P完全匹配). 2. 蛮力匹配法 问题很简单,当然也有最直接.最直观也是最好想到的方法,蛮力串匹配.即两个字符串像物流传送带一般,主串固定,子串一步步像前移动,一位位匹配比较,

算法_Longest Palindromic Substring(寻找最长回文字串)

题目:Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring. 题解:首先需要清楚什么是“回文“(不知道这个翻译对不对?)字符串!回文字符串关于某一个字符对称,在左右两边与中心相同距离的字符相等. 那么还需要

KMP算法 --- 深入理解next数组

KMP算法的前缀next数组最通俗的解释 我们在一个母字符串中查找一个子字符串有很多方法.KMP是一种最常见的改进算法,它可以在匹配过程中失配的情况下,有效地多往后面跳几个字符,加快匹配速度. 当然我们可以看到这个算法针对的是子串有对称属性,如果有对称属性,那么就需要向前查找是否有可以再次匹配的内容. 在KMP算法中有个数组,叫做前缀数组,也有的叫next数组,每一个子串有一个固定的next数组,它记录着字符串匹配过程中失配情况下可以向前多跳几个字符,当然它描述的也是子串的对称程度,程度越高,值

KMP算法的next[]数组通俗解释

我们在一个母字符串中查找一个子字符串有很多方法.KMP是一种最常见的改进算法,它可以在匹配过程中失配的情况下,有效地多往后面跳几个字符,加快匹配速度. 当然我们可以看到这个算法针对的是子串有对称属性,如果有对称属性,那么就需要向前查找是否有可以再次匹配的内容. 在KMP算法中有个数组,叫做前缀数组,也有的叫next数组,每一个子串有一个固定的next数组,它记录着字符串匹配过程中失配情况下可以向前多跳几个字符,当然它描述的也是子串的对称程度,程度越高,值越大,当然之前可能出现再匹配的机会就更大.

KMP算法-之next数组-详解

我们在一个母字符串中查找一个子字符串有很多方法.KMP是一种最常见的改进算法,它可以在匹配过程中失配的情况下,有效地多往后面跳几个字符,加快匹配速度. 当然我们可以看到这个算法针对的是子串有对称属性,如果有对称属性,那么就需要向前查找是否有可以再次匹配的内容. 在KMP算法中有个数组,叫做前缀数组,也有的叫next数组,每一个子串有一个固定的next数组,它记录着字符串匹配过程中失配情况下可以向前多跳几个字符,当然它描述的也是子串的对称程度,程度越高,值越大,当然之前可能出现再匹配的机会就更大.