| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 992 人关注过本帖
标题:回文字符串的一个问题
只看楼主 加入收藏
chunzhuyitou
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2017-12-4
结帖率:66.67%
收藏
已结贴  问题点数:10 回复次数:1 
回文字符串的一个问题
题目在此:描述
王老板特别喜欢研究对称这种性质。这不有一种特殊形式的字符串,其正反序相同,被称为“回文字符串”。例如level就是一个回文字符串。

输入
一串字符串,长度小于50。

输出
如果该字符串是回文字符串,则输出回文字符串中回文序列的长度;如果该字符串不是回文字符串,则输出−1;
如果回文字符串长度为奇数,则最后回文序列的长度需要加上正中间字符的长度(如level输出3)。

样例输入1 复制
level
样例输出1
3
样例输入2 复制
life
样例输出2
-1

#include<stdio.h>
#include<string.h>
int main()
{
    char a[50];
    int i;
    for(i=0;i<strlen(a);i++)
    {
        scanf("%c",&a[i]);
        
    }
    for(i=0;i<strlen(a);i++)
    {
        if(a[i]!=a[strlen(a)-i-1])
        {
            break;
        }
        
        if(i==strlen(a)+1)
        {
            if(strlen(a)%2==0)
            
            {
                printf("%d",strlen(a)/2);return 0;
            }
            else {
            printf("%d",(strlen(a)+1)/2);return 0;}
        }
    }
    printf("-1");
}
我输入level 输出是-1
请问哪里错了?
搜索更多相关主题的帖子: 回文 字符串 长度 输出 strlen 
2018-01-18 20:54
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:10 
#include <stdio.h>
main()
{
    char a[50];
    int i=0, j;
    for (i=0; i<50; ++i)
        if ((a[i]=getchar()) == '\n')
            break;
    for(--i,j=0; i>=j; --i,++j)
        if (a[i] != a[j])
            break;
    printf("%d\n", i>j?-1:j);
}

2018-01-18 22:44
快速回复:回文字符串的一个问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017034 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved