UVA 401 Palindromes String 第一题

本文介绍了一种使用C语言实现的判断字符串是否为回文或镜像的方法。通过两个自定义函数分别检查字符串是否呈左右对称及是否为回文。文中还提供了特定的字符映射表用于镜像字符串的判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

传送门  http://openoj.awaysoft.com:8080/judge/contest/view.action?cid=326#problem/A

题意是这样的 判断回文或者是是否是镜子的字符串(左右对称)

#include<stdio.h>
#include<string.h>
char str[100];
char m_left[200]= {"AMYZO12E3S5HTIUJV8WLX"};  //对称的字符序列
char m_right[200]={"AMY5O1S3E2ZHTIULV8WJX"};
int palindrome(int len)   //判断回文
{
    int i=len-1,j;
    for(j=0;j<=i;j++,i--)
    {
      if(str[i]!=str[j])break;                     
    }   
    if(i<j)return 1;
    return 0;
}            
int mirror(int len)   判断对称的字符
{
    char *pos_left,*pos_right;
    int edge=strlen(m_left),i=len-1,j;
    for(j=0;j<=i;j++,i--)
    {
       pos_left=strchr(m_left,str[j]);                    
       pos_right=strchr(m_right,str[i]);
       if(pos_left==NULL||pos_right==NULL)break;                    
       else {
              if( (pos_left-m_left)!=(pos_right-m_right) )break; 
            }
    }
    if(i<j)return 1;
    return 0;
    
}


int main()
{


    int judge_p,judge_m;
    while(scanf("%s",str)!=EOF)
    {
        judge_p=judge_m=0;                       
        int len=strlen(str);                     
        judge_p=palindrome(len);
        judge_m=mirror(len);
        if((judge_p==0)&& (judge_m==0))printf("%s -- is not a palindrome.\n\n",str);
        if((judge_p==1)&& (judge_m==0))printf("%s -- is a regular palindrome.\n\n",str);
        if((judge_p==0)&& (judge_m==1))printf("%s -- is a mirrored string.\n\n",str);
        if((judge_p==1)&& (judge_m==1))printf("%s -- is a mirrored palindrome.\n\n",str);
    }     
} 




评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值