UVA401(回文子串和镜像串)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVA401(回文子串和镜像串)相关的知识,希望对你有一定的参考价值。

可以先设一个常量镜像串,直接返回比较

#include <iostream>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <stack>
#include <cctype>
using namespace std;

#define mem(a,b) memset(a,b,sizeof(a))
#define pf printf
#define sf scanf
#define spf sprintf
#define debug printf("!\n")
#define INF 10000
#define MAXN 5010
#define MAX(a,b) a>b?a:b
#define blank pf("\n")
#define LL long long

const char* rev = "A   3  HIL JM O   2TUVWXY51SE Z  8 ";
const char* msg[]={"is not a palindrome.","is a regular palindrome.","is a mirrored string.","is a mirrored palindrome."};

char str[MAXN];

char change(char ch)
{
     if(isalpha(ch)) return rev[ch-A];
     return rev[ch-0+25];
}

int main()
{
     while(~sf("%s",str))
     {
          int p=1,m=1,i;
          int len = strlen(str);
          for(i=0;i<(len+1)/2;i++)
          {
               if(str[i]!=str[len-i-1]) p=0;
               if(change(str[i])!=str[len-i-1]) m=0;
          }
          pf("p:%d m:%d\n",p,m);
          pf("%s -- is %s\n",str,msg[p+m*2]);
     }
}
/*
NOTAPALINDROME
ISAPALINILAPASI
2A3MEAS
ATOYOTA
*/

 

以上是关于UVA401(回文子串和镜像串)的主要内容,如果未能解决你的问题,请参考以下文章

回文词(Palindromes, UVa401)

紫书例题3-3 回文词(Palindromes, UVa401)

uva 401.Palindromes

水题---判断镜像串和倒叙串

算法提升——中心扩散法(最长回文子串和回文子串)

回文串和镜像串(摘)