最长回文自负串1 求长度
2015-08-05 20:14
295 查看
最长回文字符串1 求长度
//回文字符:在判断时,忽略所有的标点和空格,且忽略大小写,输出保持原样
//本程序为最长字符串1,只计算 长度
//核心:开始操作前会有一个预处理,就是把所有的字符经行筛选和转换,并构造一个新字符组,把所有的字母转换成大写的字母存入到新字母组中
//然后,再一个一个的判断,这样会简单很多
#include<stdio.h>
#include<string.h>
#include<ctype.h>//isalpha,isdigit(检查参数c是否为阿拉伯数字0到9),isprint(功能:判断字符c是否为可打印字符(含空格)
//说明:当c为可打印字符(0x20-0x7e)时,返回非零值,否则返回零。) 的头文件
#define MAX 5000+10
char buf[MAX],s[MAX];
int main()
{
int n,m=0,max=0;
int i,j,k;
fgets(buf,sizeof(s),stdin);//fgets头文件是string.h,stdin是 键盘输入字符将其送到控制台、输入流。
n=strlen(buf); //计算长度
for(i=0;i<n;i++) //将不计算所有的其他符号,并且把所有的字母转换成大写
{
if(isalpha(buf[i])) // isalpha(c)这个函数判断c是不是小写字母,如果是的话,那么执行下一步,转换成大写字母
s[m++]=toupper(buf[i]);//用toupper()是将小写转换成大写(或者用s[m++]=buf[i]-'a'+'A'也可以),而tolower 是将大写转换成小写
}
for(i=0;i<m;i++)
for(j=0;j<m;j++)
{
int ok=1;
for(k=i;k<=j;k++)
{
if(s[k]!=s[i+j-k])
ok=0; //上面标记的是ok=1;所以在下面出现ok=0时,那么ok便不会改变成 1
}
if(ok && j-i+1>max)
max=j-i+1; //如果ok是恒等于1的,那么就说明在i~j之间,就是一个字符串,没有不符合的情况
}
printf("max=%d\n",max);
return 0;
}
//回文字符:在判断时,忽略所有的标点和空格,且忽略大小写,输出保持原样
//本程序为最长字符串1,只计算 长度
//核心:开始操作前会有一个预处理,就是把所有的字符经行筛选和转换,并构造一个新字符组,把所有的字母转换成大写的字母存入到新字母组中
//然后,再一个一个的判断,这样会简单很多
#include<stdio.h>
#include<string.h>
#include<ctype.h>//isalpha,isdigit(检查参数c是否为阿拉伯数字0到9),isprint(功能:判断字符c是否为可打印字符(含空格)
//说明:当c为可打印字符(0x20-0x7e)时,返回非零值,否则返回零。) 的头文件
#define MAX 5000+10
char buf[MAX],s[MAX];
int main()
{
int n,m=0,max=0;
int i,j,k;
fgets(buf,sizeof(s),stdin);//fgets头文件是string.h,stdin是 键盘输入字符将其送到控制台、输入流。
n=strlen(buf); //计算长度
for(i=0;i<n;i++) //将不计算所有的其他符号,并且把所有的字母转换成大写
{
if(isalpha(buf[i])) // isalpha(c)这个函数判断c是不是小写字母,如果是的话,那么执行下一步,转换成大写字母
s[m++]=toupper(buf[i]);//用toupper()是将小写转换成大写(或者用s[m++]=buf[i]-'a'+'A'也可以),而tolower 是将大写转换成小写
}
for(i=0;i<m;i++)
for(j=0;j<m;j++)
{
int ok=1;
for(k=i;k<=j;k++)
{
if(s[k]!=s[i+j-k])
ok=0; //上面标记的是ok=1;所以在下面出现ok=0时,那么ok便不会改变成 1
}
if(ok && j-i+1>max)
max=j-i+1; //如果ok是恒等于1的,那么就说明在i~j之间,就是一个字符串,没有不符合的情况
}
printf("max=%d\n",max);
return 0;
}
相关文章推荐
- UIScrolView里自己滚动滑动 ,无限制那种
- day16
- Hudson任务配置说明
- 二叉树左旋和右旋
- 揭秘网络女主播:百万年薪下的暗黑成长史(全)
- 数据结构 表达式求值
- 多线程处理mysql数据
- zedboard中断main
- 红黑树
- 无序数组的中位数(set+deque)hdu5249
- hdu2421(数学题)
- ScaleAnimation 缩放动画效果
- Linux时间子系统之一:clock source(时钟源)
- 什么情况用递归
- 在画布上实现正弦曲线和文字的绘制
- Java程序设计之打印100~999的水仙花数
- OC/iOS获取随机数
- Windows代码页
- Day8.04
- JavaScript常用表单验证