回文序列

3第一天开通博客从此有了记流水账的平台,再也不用担心学的东西记不住了~~~

第一篇 回文串:要求:输入一个字符串判读是否是回文串及镜像串。输入串保证不含数字0.回文串就是反串以后与原串相同如abba。镜像串就是左右镜像之后与原串相同如3AIAE和2S。

c程序(c++源文件):

#include 
#include 
#include 
#include 


using namespace std;


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




char r( char ch){
    if (isalpha(ch)){
        return rev[ch-'A'];//返回字母的镜像
    }else
    return rev[ch-'0'+25];//返回数字的镜像,rev中数字前面有26个大写英文字母的镜像
}


int main()
{
    char s[30];
    while ( scanf("%s",s)==1){
        int len  =strlen(s);
        int p=1,m=1;
        for( int i = 0;i<(len+1)/2;i++){
            if(s[i]!=s[len-i-1] ) p=0;//不是回文串
            if(r(s[i])!=s[len-i-1]) m=0;//不是镜像串
        }
         printf("%s--is %s.\n\n",s,msg[m*2+p]);
    }


    return 0;


} 回文序列_第1张图片

你可能感兴趣的:(算法)