首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找给定字符串是回文字符串还是非回文字符串

查找给定字符串是回文字符串还是非回文字符串
EN

Stack Overflow用户
提问于 2010-07-20 05:59:29
回答 10查看 9.8K关注 0票数 3

我编写了一个程序来检查输入的字符串是回文还是不是回文,但它总是显示它不是回文

代码语言:javascript
复制
#include <conio.h> 
#include <graphics.h> 
#include <string.h>
void main(void)
{
    int i,len,halflen,flag=1;
    char str[50];
    clrscr();
    printf("Enter a string:\n");
    gets(str);
    len=strlen(str);
    halflen=len/2;
    for(i=0;i<halflen;i++)
    {
        if(str[i]!=str[i+halflen])
            flag=0;
        break;

    }
    if(flag)
        printf("It is a Palindrome.");
    else
        printf("It is not a Palindrome.");
    getch();
}
EN

回答 10

Stack Overflow用户

发布于 2010-07-20 06:03:59

你的中心比较是有缺陷的:

代码语言:javascript
复制
if (str[i] != str[i+halflen]) 

这并不是在比较你认为的两个字符。

试着在你的程序中输入"HelloHello“,它会说这是一个回文!

您需要对这两个进行比较:

代码语言:javascript
复制
if (str[i] != str[len-i-1])

(并按照另一个答案中的建议修复大括号)

票数 10
EN

Stack Overflow用户

发布于 2010-07-20 06:01:37

为了给你一些线索,我对你的代码做了一些更整洁的缩进:

代码语言:javascript
复制
for(i=0;i<halflen;i++)
    {
        if(str[i]!=str[i+halflen])
            flag=0;
        break;
    }
票数 6
EN

Stack Overflow用户

发布于 2012-06-08 21:46:46

您还可以使用equal函数使用STL检查给定字符串是否为回文字符串。假设您有一个名为xstd::string,然后下面的函数调用确定x是否为回文类型

代码语言:javascript
复制
equal(x.begin(), x.begin() + x.size() / 2, x.rbegin());
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3285432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档