浙大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相关推荐

  1. 浙大PAT甲级1019. General Palindromic Number (20)

    1019. General Palindromic Number (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN ...

  2. PAT 甲级 1040 Longest Symmetric String

    1040 Longest Symmetric String 题目大意:给出一个字符串,求出最长的回文子串的长度 思路:从第一个字符开始往后遍历,每次遍历第一个字符不动,从下一个字符开始找起,若是有回文 ...

  3. 浙大PAT甲级1027. Colors in Mars (20)

    1027. Colors in Mars (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue People ...

  4. 浙大PAT甲级1006

    1006. Sign In and Sign Out (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...

  5. 浙大 PAT 甲级1009

    1009. Product of Polynomials (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yu ...

  6. 浙大PAT甲级-1017

    银行队列: (却没用到队列) #include <iostream> #include <string> #include <algorithm> #include ...

  7. 浙大PAT甲级-1021

    还是看了凌大佬的博客才全部ac的 (https://blog.csdn.net/iaccepted/article/details/20454519) #include <iostream> ...

  8. PAT甲级题目解析和知识点分类整理

    转载请注明出处 个人博客:https://maxusun.github.io/ 今天整理电脑,发现了去年为了考研浙大计算机整理的PAT资料.现在考研已经尘埃落定.想到当时盲目刷题浪费了好多时间,在这里 ...

  9. PAT学习资料汇总(PAT甲级、PAT顶级、PAT考试经验)

    二.PAT甲级 PAT甲级真题目录(按题型整理) PAT甲级真题目录(按题型整理)_love music.的博客-CSDN博客_pat甲级真题 PAT甲[所有题目+解析+代码示例+总结]附带所有历年整 ...

最新文章

  1. 企业如何选择音视频会议系统分析
  2. makefile 库目录
  3. Colorful Lecture Note(栈的模拟)
  4. WebClient UI framework - how tree proxy structure node is rendered
  5. leetcode 19. 删除链表的倒数第N个节点(双指针)
  6. python访问数据库统一方法_Python 3.x 连接数据库(pymysql 方式)
  7. python字符串大全_Python 字符串操作方法大全
  8. 特殊类型结构--枚举
  9. drools 7.x 模板的简单使用
  10. 初学者python笔记(静态属性、类方法、静态方法、类的组合)
  11. CentOS 7部署rsync备份服务器
  12. 计算机网络设计校园网实验报告,计算机网络综合设计性实验报告-校园网网络构建方案设计和实现..doc...
  13. 「Python编程规范」语句分隔符号
  14. 维基百科的语料库下载以及信息提取笔记
  15. 访问网站提示:您未被授权查看该页恢复办法
  16. kali linux 网络渗透测试学习笔记(三)社会工程学之Java攻击:钓鱼网站制作
  17. 160_zigbee协调器_一种判断数据包有没有拿对的方法【掐头去尾发,拿头指针、尾指针去判断】
  18. 【Linux】VIM使用
  19. c语言规定 标识符由,【填空题】C语言的标识符命名规则规定标识符可以由字母数字和下划线组成,首字符不能是 。 (4.0分)...
  20. macd的python代码同花顺_同花顺MACD金叉买点主图指标公式

热门文章

  1. DAGA: Data Augmentation with a Generation Approach for Low-resource Tagging Tasks 论文解读
  2. 【吴恩达机器学习笔记】第2周 - python写代价函数/成本函数
  3. win10计算机文件夹左边,详细教你win10我的电脑7个文件夹怎么去除
  4. ThreeJS-平行光物体投影(十九)
  5. 请求所有父控件及祖宗控件不要拦截事件
  6. 16个阵列键盘驱动程序
  7. 随机抽奖程序_某个知乎想法抽奖程序随机更新。jpg
  8. 浅论如何做一个漂亮的课件
  9. C语言选择结构--RAPTOR算法及if语句
  10. Ubuntu下查看CPU和GPU信息