随便输入一个字符串判断它是不是回文

#include <stdio.h>
#include <string.h>
main()
{
int i,j,temp=0;
char a[100];
printf("从键盘上输入一串字符串:\n");
gets(a);
j=strlen(a);
for (i=0;i<j;i++)
{
if (a[i] != a[j=1-i])
{
temp=0;
printf("不是回文\n");
break;
}
else
{
temp=1;
printf ("是回文\n");
}
}
return(0);
}

1、打开JUPTER NOTEBOOK,新建一个PYTHON文档。



2、n = input("Please input string: ")print(n)首先让用户输入要进行判断的字符串,然后打印出来查看一下。



3、可以用IF语句来进行判断,判断倒向的是否等于正向的即可。



4、还可以简化一下流程。



5、如下图也可以定义一个新的FUNCTION,然后进行判断。



6、可以利用长度范围不断往回减去范围值,得到反向的字符串,就完成了。


扩展资料:

首先,一个回文串的字符频度应该是:中点频度最低为1,其他字符频度最低为2。那么,如果串中有频度是1的字符,它肯定位于回文串的中心,不然就不属于任何回文串。因此,按频度可以筛选掉一定量的多余字符,将母串进行分割。分割的好处是子串有界。

最懒方法:遍历整串,从中心向两侧扩张并做比较,取得长度,最后返回最大长度所在的串。

优化:在遍历整串过程中,最大长度maxlen会时刻增加,那么,当分割后的有界子串长度小于最大长度maxlen时,就不需要再去判断了。

如果串的某个连续子串(len>=2)它们的频度都是1,那么就不属于任何回文串,可以快速剔除,节省时间。这是关键。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-03-10

1、打开JUPTER NOTEBOOK,新建一个PYTHON文档。

2、n = input("Please input string: ")print(n)首先让用户输入要进行判断的字符串,然后打印出来查看一下。

3、可以用IF语句来进行判断,判断倒向的是否等于正向的即可。

4、还可以简化一下流程。

5、如下图也可以定义一个新的FUNCTION,然后进行判断。

6、可以利用长度范围不断往回减去范围值,得到反向的字符串,就完成了。

本回答被网友采纳
第2个回答  2020-03-07

例如: 

代码如下:#include<stdio.h>、#include<string.h>、int huiwen(char *str){、 //char ch[100]。

int len=strlen(str);  //获取字符串的长度、 int i,j,temp;for(i=0,j=len-1;i<=j;i++,j--)  //第一位和最后一位相比较循环判断 {。

if(str[i]==str[j])  //、temp=1;else{、temp=0;break;}};return temp;};main(){char ch[100];printf。

//scanf("%s",&ch);  //无法判断特殊字符如空格键;gets(ch);//可以判断键盘输入的任意字符。

if(huiwen(ch));printf("这组字符串 %s 是回文字符串!\n",ch);else。printf("这组字符串 %s 不是回文字符串!\n",ch)。

扩展资料:

首先,一个回文串的字符频度应该是:中点频度最低为1,其他字符频度最低为2。那么,如果串中有频度是1的字符,它肯定位于回文串的中心,不然就不属于任何回文串。因此,按频度可以筛选掉一定量的多余字符,将母串进行分割。分割的好处是子串有界。

最懒方法:遍历整串,从中心向两侧扩张并做比较,取得长度,最后返回最大长度所在的串。

优化:在遍历整串过程中,最大长度maxlen会时刻增加,那么,当分割后的有界子串长度小于最大长度maxlen时,就不需要再去判断了。

如果串的某个连续子串(len>=2)它们的频度都是1,那么就不属于任何回文串,可以快速剔除,节省时间。这是关键。

    本回答被网友采纳
    第3个回答  推荐于2017-09-20
    #include <stdio.h>
    #include <string.h>
    main()
    {
    int i,j,temp=1;
    char a[100];
    printf("从键盘上输入一串字符串:\n");
    gets(a);
    j=strlen(a);
    for (i=0;i<j;i++)
    {
    if (a[i] != a[j-1-i])
    {
    temp=0;
    break;
    }
    }
    if(temp==0) printf("不是回文\n");
    else printf ("是回文\n");
    return(0);
    }本回答被提问者采纳
    第4个回答  2017-10-10
    #include<stdio.h>
    #include<string.h>
    #define MAX 1000
    int main()
    {
    char str[MAX];
    int i = 0;
    int len;
    scanf("%s",str);
    len = strlen(str);
    for(i=0;i<len/2+1;++i)
        if(*(str+i) != *(str+len - i -1))
            break;
    if(i==len/2+1)
        printf("YES");
    else
        printf("NO");
    return 0;
    }

    相似回答