#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,那么就不属于任何回文串,可以快速剔除,节省时间。这是关键。
例如:
代码如下:#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,那么就不属于任何回文串,可以快速剔除,节省时间。这是关键。