博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最长回文子串
阅读量:6214 次
发布时间:2019-06-21

本文共 1174 字,大约阅读时间需要 3 分钟。

原串中连续出现且正着看与倒着看一样的串,这里忽略非字母

#include 
#include
#include
int main(void){ using namespace std; const int MAXLEN=100; char src[MAXLEN]; //源 char disposed[MAXLEN]; //处理过的 int index[MAXLEN]; //记录处理过的对应的下标 ifstream fin=ifstream("Text.txt"); fin.getline(src,MAXLEN); //getline()去掉了换行符,如果有的话,末尾加 '\0' int count=0; //记录加入到处理后的字母总个数 int cursor=0; //指向src的每一个 /*下面开始预处理*/ while (src[cursor]!='\0') //结尾 { if (isalpha(src[cursor])) //不是字母就不管了 { disposed[count]=toupper(src[cursor]); index[count]=cursor; //记录对应的源的下标 count++; } cursor++; } /*下面干正事*/ int x,y; //记录最长的首尾下标,在dispose中的 int myMaxLen=0; //最长的长度 for (int i=0;i
myMaxLen)) //不是break跳出的 { x=i,y=j; myMaxLen=thisLen; } } } cout<<"源字符串:\n"<
<

 

总结:

1. 预处理,把原来的串中的非字母剔除并且全改成大写,结果放到一个处理过的数组,并且记录下标对应关系

2. 其实也是列举了一个字符串的所有子串,看它是不是合适且是不是最长的,两层for循环里面的就是那次要处理

转载于:https://www.cnblogs.com/jiayith/p/3484852.html

你可能感兴趣的文章
静态NAT技术三部曲
查看>>
折腾了一晚上Windows网络却未果
查看>>
三、docker 容器管理(常用命令篇)
查看>>
Linux常用命令总结之(三)cd
查看>>
uvalive 6343 - Dyslexic Gollum AC自动机
查看>>
【个人】纪念第一个51CTO个人博文
查看>>
去除postfix群组重复邮件
查看>>
ExtMail管理员密码恢复
查看>>
第17章 TCP:传输控制协议
查看>>
Linux 内核调优
查看>>
tomcat站点启动失败
查看>>
VirtualBox 安装增强工具Guest Additions
查看>>
Linux分区及文件挂载
查看>>
eclipse编辑struts.xml 代码提示
查看>>
第三周编程总结
查看>>
iPhone应用中APNS推送通知流程代码实现案例
查看>>
AIX下配置NFS共享给LINUX
查看>>
cisco 2960 交换机 安装配置基础
查看>>
8.聚集函数 ---SQL
查看>>
【linux】网络编程基础(c语言编程)
查看>>