浙大PAT甲级1040
浙大PAT甲级1040
- 原题
- 问题分析
原题
1040 Longest Symmetric String (25 分)
Given a string, you are supposed to output the length of the longest symmetric sub-string. For example, given Is PAT&TAP symmetric?, the longest symmetric sub-string is s PAT&TAP s, hence you must output 11.
Input Specification:
Each input file contains one test case which gives a non-empty string of length no more than 1000.
Output Specification:
For each test case, simply print the maximum length in a line.
Sample Input:
Is PAT&TAP symmetric?
Sample Output:
11
问题分析
问题要求在给出的字符串中,找出最长的对称部分。
我能想到的解法有两种,一种是遍历字符串,以遍历的字符为中心向两侧拓展,找出可能的最大字串。可以参考https://blog.csdn.net/xiao1guaishou/article/details/89041749
另一种解法,利用了对称的性质:对称的子串部分做翻转,仍然是对称的。如将字符串
s1:“jkabcbafjytm"翻转,得到s2:“mtyjfabcbakj”。其中,最大的对称子串"abcba"在s2中仍然是"abcba”。而且是s1与s2的最大连续公共子串,于是可以利用这个性质,来解决问题。将输入翻转,然后找原字符串与翻转得到的字符串的最长公共子串,只需要输出长度即可。
注意可能存在空格,所以字符串读取使用getline。。
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;int v[1010][1010];
int max_length=1;
void fun(string a,string b)
{a = '0'+a;b='0'+b;v[0][0]=0;for(int i=1;i<a.size();i++)for(int j=1;j<b.size();j++){if (a[i]==b[j]){v[i][j] = v[i-1][j-1]+1;max_length = max_length>v[i][j]?max_length:v[i][j];}elsev[i][j]=0;}
}int main()
{string a,b;getline(cin,a);b=a;reverse(a.begin(),a.end());fun(a,b);cout<<max_length;return 0;
}
这种方法在思考上可能不如头一种方法来得快,但是代码写起来非常简单。。。仅供大家参考。。
浙大PAT甲级1040相关推荐
- 浙大PAT甲级1019. General Palindromic Number (20)
1019. General Palindromic Number (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN ...
- PAT 甲级 1040 Longest Symmetric String
1040 Longest Symmetric String 题目大意:给出一个字符串,求出最长的回文子串的长度 思路:从第一个字符开始往后遍历,每次遍历第一个字符不动,从下一个字符开始找起,若是有回文 ...
- 浙大PAT甲级1027. Colors in Mars (20)
1027. Colors in Mars (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue People ...
- 浙大PAT甲级1006
1006. Sign In and Sign Out (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...
- 浙大 PAT 甲级1009
1009. Product of Polynomials (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yu ...
- 浙大PAT甲级-1017
银行队列: (却没用到队列) #include <iostream> #include <string> #include <algorithm> #include ...
- 浙大PAT甲级-1021
还是看了凌大佬的博客才全部ac的 (https://blog.csdn.net/iaccepted/article/details/20454519) #include <iostream> ...
- PAT甲级题目解析和知识点分类整理
转载请注明出处 个人博客:https://maxusun.github.io/ 今天整理电脑,发现了去年为了考研浙大计算机整理的PAT资料.现在考研已经尘埃落定.想到当时盲目刷题浪费了好多时间,在这里 ...
- PAT学习资料汇总(PAT甲级、PAT顶级、PAT考试经验)
二.PAT甲级 PAT甲级真题目录(按题型整理) PAT甲级真题目录(按题型整理)_love music.的博客-CSDN博客_pat甲级真题 PAT甲[所有题目+解析+代码示例+总结]附带所有历年整 ...
最新文章
- 企业如何选择音视频会议系统分析
- makefile 库目录
- Colorful Lecture Note(栈的模拟)
- WebClient UI framework - how tree proxy structure node is rendered
- leetcode 19. 删除链表的倒数第N个节点(双指针)
- python访问数据库统一方法_Python 3.x 连接数据库(pymysql 方式)
- python字符串大全_Python 字符串操作方法大全
- 特殊类型结构--枚举
- drools 7.x 模板的简单使用
- 初学者python笔记(静态属性、类方法、静态方法、类的组合)
- CentOS 7部署rsync备份服务器
- 计算机网络设计校园网实验报告,计算机网络综合设计性实验报告-校园网网络构建方案设计和实现..doc...
- 「Python编程规范」语句分隔符号
- 维基百科的语料库下载以及信息提取笔记
- 访问网站提示:您未被授权查看该页恢复办法
- kali linux 网络渗透测试学习笔记(三)社会工程学之Java攻击:钓鱼网站制作
- 160_zigbee协调器_一种判断数据包有没有拿对的方法【掐头去尾发,拿头指针、尾指针去判断】
- 【Linux】VIM使用
- c语言规定 标识符由,【填空题】C语言的标识符命名规则规定标识符可以由字母数字和下划线组成,首字符不能是 。 (4.0分)...
- macd的python代码同花顺_同花顺MACD金叉买点主图指标公式
热门文章
- DAGA: Data Augmentation with a Generation Approach for Low-resource Tagging Tasks 论文解读
- 【吴恩达机器学习笔记】第2周 - python写代价函数/成本函数
- win10计算机文件夹左边,详细教你win10我的电脑7个文件夹怎么去除
- ThreeJS-平行光物体投影(十九)
- 请求所有父控件及祖宗控件不要拦截事件
- 16个阵列键盘驱动程序
- 随机抽奖程序_某个知乎想法抽奖程序随机更新。jpg
- 浅论如何做一个漂亮的课件
- C语言选择结构--RAPTOR算法及if语句
- Ubuntu下查看CPU和GPU信息