7-273 判断回文串

若一个串正向看和反向看等价,则称做回文串。例如:t,abba,xyzyx均是回文串。
给出一个长度不超过60的字符串,判断是否是回文串。

输入格式:

首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每行输入一个长度不超过60的字符串(串中不包含空格)。

输出格式:

对于每组测试数据,判断是否是回文串,若是输出“Yes”,否则输出“No”。引号不必输出。

输入样例:

2
abba
abc

输出样例:

Yes
No

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

思路

  1. 输入变量 T,表示接下来有 T 组测试数据。
  2. 对于每组测试数据:
  3. 输入一个字符串 str。
  4. 定义标志变量 flag 来记录这个字符串是否为回文字符串,初始值为1。
  5. 使用双指针法,将指针 i 指向字符串开头,将指针 j 指向字符串结尾。如果 str[i] 与 str[j] 不相等,则将 flag 设为0。 
  6. 输出 Yes 或者 No,表示该字符串是否为回文字符串。

思路

#include<stdio.h>
int main()
{
    int T,flag,i,j,len;  // 定义变量 T 表示测试数据组数,flag表示是否为回文字符串,i,j 分别表示两个指针的位置,len 表示字符串的长度。
    char str[61];  // 定义字符数组 str,用于存储输入的字符串。
    scanf("%d",&T); 
    while(T--)  // 循环遍历每组测试数据。
    {
        flag=1;  // 将标志变量 flag 初始值设为1,表示初始时该字符串为回文字符串。
        scanf("%s",str);  
        len=strlen(str);  // 计算该字符串的长度。
        for(i=0,j=len-1;i<j;i++,j--)  // 使用双指针法遍历字符串中的每个字符,直到两个指针相遇为止。
        {
            if(str[i]!=str[j])  // 如果发现当前字符不对称,则将 flag 设为0。
                flag=0;
        }
        if(flag==1)  // 如果 flag 为1,表示该字符串为回文字符串。
            printf("Yes\n");
        else  // 否则,表示该字符串不是回文字符串。
            printf("No\n");
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吾乃宇宙欠债王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值