博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
腾讯2016实习生笔试(开发)——潜在最长回文子串
阅读量:6809 次
发布时间:2019-06-26

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

  hot3.png

题目:给定任意一个字符串,最大长度1000,计算出最长的回文子串,除了直接得到的外,还可以通过删除某些字符而达到最长,比如“cabbeaf"删除c e f 后剩"abba",这个是原字符串中存在的最长字符串。

例:

输入 :cabbeaf       输出:4     (abba)

输入 :cabiuopjbeaf       输出:4     (abba)

输入 :cabiuuopjbeaf       输出:6     (abuuba)

class Solution {public:    int longestPalindrome(string s) {		//构造真值表,i,j所对应的字符相等的地方为真		bool f[1000][1000] = {false};		int slen = s.size();		for(size_t i = 0; i < slen; i++) {			f[i][i] = true;			for (size_t j = 0; j < i; j++) { 				f[j][i] = (s[j] == s[i]);			}		}		//for(int i = 0; i
=0){ if(f[i-row_][k]){ if(row_==0) maxtemp++; else maxtemp += 2; }else{ if((k == slen-1) && (i-row_) >=0 ){ k = i+row_; row_++; } row_--; } } row_++; if((i-row_)<0) break; } if(maxtemp > maxlen) maxlen = maxtemp; } for(int i = 0; i < slen; i++){ int maxtemp = 1; int row_ = 1; for(int k = i+1; k < slen; k++){ if(i-row_>=0){ if(f[i-row_][k]){ if(row_==0) maxtemp++; else maxtemp += 2; }else{ if((k == slen-1) && (i-row_) >=0 ){ k = i+row_; row_++; } row_--; } } row_++; if((i-row_)<0) break; } if(maxtemp > maxlen) maxlen = maxtemp; } return maxlen; }};

转载于:https://my.oschina.net/xcxt/blog/653221

你可能感兴趣的文章
【037】Excel 中遍历修改文件(VBA)
查看>>
MYSQL 查看表定义的 4 种方法
查看>>
MYSQL insert
查看>>
MYSQL 二进制还原
查看>>
nw.js---创建一个点击菜单
查看>>
如何让自己电脑更快
查看>>
python+selenium常见坑
查看>>
Android基于mAppWidget实现手绘地图(九)–如何处理地图对象的touch事件
查看>>
二叉搜索树的根插入、选择、删除、合并、排序等操作的实现
查看>>
C++设计模式实现--职责链(Chain of Responsibility)模式
查看>>
桩程序和驱动程序
查看>>
R语言中的read.table()
查看>>
Android修改包名的方法,简单粗暴。
查看>>
【Python之旅】第二篇(二):列表与元组
查看>>
RHEL6入门系列之三,GNU计划与Linux发行版
查看>>
小强IT游记之新疆行
查看>>
SCCM部署前的SQL Server准备
查看>>
SQL Server数据库镜像下有效的索引维护
查看>>
产品观,来自微信张小龙的
查看>>
aix下sybase设备的迁移
查看>>