我是靠谱客的博主 高兴枫叶,最近开发中收集的这篇文章主要介绍ACM练习题——镜像字符串(C语言解析),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Description

time limit per test : 1 secondtimelimitpertest:1second
memory limit per test : 128 megabytesmemorylimitpertest:128megabytes
给出一个由字符 ‘b’,‘d’,‘p’,‘q’ 构成的字符串 S,判断 S 是不是镜像字符串。镜像字符串指 S 经过以下操作后得到的字符串仍为 S :

  1. 反转 SS ((例:“bdpq” ⇒ “qpdb” ))
  2. 将 ‘b’ 改为 ‘d’,‘d’ 改为 ‘b’,’p‘ 改为 ‘q’,’q‘ 改为 ’p‘

Input

一行一个字符串 S(len(S)≤10^3)。

Output

若SS为镜像字符串,输出 YES,否则输出 NO。

Sample Input 1

pbdq
Sample Output 1

YES
Sample Input 2

ppqb
Sample Output 2

NO
思路:
1.先判断字符串长度是否是偶数,不然就不能是镜像字符串
2.找到规律,在下列代码有。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(void){
	int i,m,t;
	char *a,*b;
	a=(char *)malloc(sizeof(char) *100);
	b=(char *)malloc(sizeof(char) *100);
	while(scanf("%s",a) != EOF){
		m=strlen(a);
		t=1;
		if(m%2==1){
			t=0;
		}
		else{
			for(i=0;i<m/2;i++){               //判断对应项的字符是否对应
				if(a[i]=='b'&&a[m-1-i]!='d'){
					t=0;
					break;
				}
				if(a[i]=='d'&&a[m-1-i]!='b'){
					t=0;
					break;
				}
				if(a[i]=='q'&&a[m-1-i]!='p'){
					t=0;
					break;
				}
				if(a[i]=='p'&&a[m-1-i]!='q'){
					t=0;
					break;
				}
			}
		}
		if(t==1){
			printf("YESn");
		}
		else{
			printf("NOn");
		}
	}
}

最后

以上就是高兴枫叶为你收集整理的ACM练习题——镜像字符串(C语言解析)的全部内容,希望文章能够帮你解决ACM练习题——镜像字符串(C语言解析)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部