大家好,又见面了,我是你们的朋友全栈君。
7-2 判断回文字符串 (15 分)
输入一个字符串,判断该字符串是否为回文。回文就是字符串中心对称,从左向右读和从右向左读的内容是一样的。
输入格式:
输入在一行中给出一个不超过80
个字符长度的、以回车结束的非空字符串。
输出格式:
输出在第1行中输出字符串。如果它是回文字符串,在第2行中输出Yes
,否则输出No
。
输入样例1:
level
输出样例1:
level
Yes
输入样例2:
1 + 2 = 2 + 1 =
输出样例2:
1 + 2 = 2 + 1 =
No
这道题刚上一篇博客写的题有点不一样,主要是算法上的不同,需求还是一样,都是判断字符串是不是回文字符串,上次写的博客的那道题是使用数组+指针来判断回文字符串,这道题没给我们限制算法,那么我们就用最原始的方法,直接上数组!!!
先看代码吧
#include<stdio.h>
int main(){
int i,k,j;
char line[80];
k = 0;
while((line[k] = getchar()) != '\n'){//读入字符串,以回车符结尾
k++;//统计输入字符串的长度
}
i = 0;
j = k;//保存k值
k = k-1;//k = k-1的意思是,数组的下标最大是k-1
while(i < k){
if(line[i] != line[k])//字符串比较判断
break;
i++;
k--;
}
for(int i = 0;i < j;i++){//输出字符串
printf("%c",line[i]);
}
printf("\n");
if(i >= k){打印判断结果
printf("Yes\n");
} else{
printf("No\n");
}
return 0;
}
这道题的代码就相对比较容易理解一些了。首先是输入,输入以回车符结尾,并统计字符串长度,然后根据字符串长度进行首尾的字符比较。这个代码可能唯一难理解的地方是最后打印判断结果的地方,为什么是i >=k,这个你可以带入一个字符串进行验证一下,再回过头来想想,i是从零开始的,k是从最大下标k-1开始的,如果i<k了,那肯定说明在执行判断的时候因为字符不对影响等而终止了,说以只有当i >=k的时候才能正确判断字符串是不是回文。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/138863.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...