[刷题] PTA 7-64 最长对称子串
7-64 最长对称子串
我的代码:
- 1 #include<stdio.h>
- 2 #include<string.h>
- 3 #define N 1001
- 4
- 5 int main() {
- 6 char str[N];
- 7 int len;
- 8 gets(str);
- 9 len=strlen(str);
- 10 int i=0,j=0,sys=0,lng=1,temp=0;
- 11 for(i=2; i<len; i++) {
- 12 if(sys==0) {
- 13 j=i-2;
- 14 if(str[j]==str[i]) {
- 15 sys=1;temp=3;j--;
- 16 if(j<0) sys=0;
- 17 }
- 18 } else {
- 19 if(str[j]==str[i] && j>=0) {
- 20 temp+=2;j--;
- 21 } else {
- 22 sys=0;
- 23 }
- 24 }
- 25 if(temp>lng) lng=temp;
- 26 }
- 27 sys=0;temp=0;
- 28 for(i=1; i<len; i++) {
- 29 if(sys==0) {
- 30 j=i-1;
- 31 if(str[j]==str[i]) {
- 32 sys=1;temp=2;j--;
- 33 if(j<0) sys=0;
- 34 }
- 35 } else {
- 36 if(str[j]==str[i] && j>=0) {
- 37 temp+=2;j--;
- 38 } else {
- 39 sys=0;
- 40 }
- 41 }
- 42 if(temp>lng) lng=temp;
- 43 }
- 44 printf("%d",lng);
- 45 }
(一个用例通不过)
思考过程:
数组存储字符串,指针i从头遍历
str[i-2]==str[i],若相等则记录对称串的长度,同时指针j从i-2开始向后遍历
两个指针所指内容不相等时停止遍历,更新对称串的长度
奇数情况
变量:
字符数组str
指针i、j
状态变量sys——当前对称串是否在增长
temp——当前对称串长度
lng——当前最长对称串长度
细节:
i从2开始遍历,按照sys的状态分两种情况
若sys==1,判断str[i]==str[j],若是则temp+=2,j--;
若否或j<0则sys=0,跳出 15
若sys==0,判断str[i]==str[i-2],若是则sys=1,j-- 16
更新lng
边界:
调试:
a 1
aba 3
abcba 5
ababa 5
a a 3
偶数情况
奇偶切换
性能优化
大神的代码:
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- #include<string>
- using namespace std;
- int main()
- {
- char str[1010];
- gets(str);
- int maxn=0,tmp;
- int len = strlen(str);
- string str;
- getline(cin,str);
- int len = str.length();
- for(int i=0;i<len;i++)
- {
- tmp = 1;//奇数时的情况,tmp不同呀!!!
- for(int j=1;j<=len;j++)
- {
- if(i-j<0 || i+j>=len || str[i-j]!=str[i+j])
- break;//不满足条件了,就跳过,此时的tmp就是i中最长字符串
- tmp += 2;
- }
- maxn = max(maxn,tmp);
- tmp = 0;//偶数时的情况
- for(int j=1;j<=len;j++)
- {
- if(i+1-j<0 || i+j>=len || str[i-j+1]!=str[i+j])
- break;
- tmp += 2;
- }
- maxn = max(maxn,tmp);
- }
- cout << maxn << endl;
- return 0;
- }
差距:
1、过于侧重从流程层面思考问题,而不是从逻辑层面思考问题
[刷题] PTA 7-64 最长对称子串的更多相关文章
- [刷题] PTA 7-61 找最长的字符串
程序: 1 #include<stdio.h> 2 #include<string.h> 3 #define N 81 4 5 int main() { 6 char ch[N ...
- leecode刷题(19)-- 最长公共前缀
leecode刷题(19)-- 最长公共前缀 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: [&quo ...
- L2-008. 最长对称子串(思维题)*
L2-008. 最长对称子串 参考博客 #include <iostream> using namespace std; int main() { string s; getline(ci ...
- 团体程序设计天梯赛-练习集L2-008. 最长对称子串
L2-008. 最长对称子串 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 对给定的字符串,本题要求你输出最长对称子串的长度. ...
- pat 团体赛练习题集 L2-008. 最长对称子串
对给定的字符串,本题要求你输出最长对称子串的长度.例如,给定"Is PAT&TAP symmetric?",最长对称子串为"s PAT&TAP s&quo ...
- L2-008. 最长对称子串
L2-008. 最长对称子串 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 对给定的字符串,本题要求你输出最长对称子串的长度. ...
- 天梯杯 L2-008. 最长对称子串
L2-008. 最长对称子串 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 对给定的字符串,本题要求你输出最长对称子串的长度. ...
- c语言:最长对称子串(3种解决方案)
问题描述: 输入一个字符串,输出该字符串中最大对称子串的长度.例如输入字符串:“avvbeeb”,该字符串中最长的子字符串是“beeb”,长度为4,因而输出为4. 解决方法:中序遍历 一,全遍历的方法 ...
- L2-008 最长对称子串 (25 分) (模拟)
链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805067704549376 题目: 对给定的字符串,本题要求你输出 ...
随机推荐
- SpringBoot-08 SpringSecurity
SpringBoot-08 SpringSecurity 创建了一个新项目,创建时选择导入starter-web 1.环境搭建 1.1 导入thymeleaf <dependency> & ...
- $@ 与 $* 差在哪?-- Shell十三问<第九问>
$@ 与 $* 差在哪?-- Shell十三问<第九问> 要说 $@ 与 $* 之前,需得先从 shell script 的 positional parameter 谈起.我们都已经知道 ...
- [Fundamental of Power Electronics]-PART I-4.开关实现-0 序
4 开关实现 在前面的章节中我们已经看到,可以使用晶体管,二极管来作为Buck,Boost和其他一些DC-DC变换器的开关元件.也许有人会想为什么会这样,以及通常如何实现半导体的开关.这些都是值得被提 ...
- [源码解析] 并行分布式任务队列 Celery 之 多进程模型
[源码解析] 并行分布式任务队列 Celery 之 多进程模型 目录 [源码解析] 并行分布式任务队列 Celery 之 多进程模型 0x00 摘要 0x01 Consumer 组件 Pool boo ...
- Java(299-314)【线程、同步】
1.多线程的原理 2.多线程内存图解 开辟新的栈空间,多个线程之间互不影响 3.Thread类的常用方法 getName()返回该线程的名称 Thread类的子类 获取线程的名称: 1.使用T ...
- 黑马架构师v2.5.1 (codeUtil)使用注意事项
资源 1.资料里的codeutil软件有问题,使用时部分类和接口文件名后有一串日期数字等.码云的没问题 2.生成代码后zookeeper的IP改为本机的
- IDEA下 Scala 安装 使用
Scala 安装 使用 1.安装Scala插件 Setting--->Plugins--->搜索Scala--->install--->安装完成 或者线上安装不成功/网速太慢, ...
- [ERROR]: gitstatus failed to initialize.
1 问题描述 Manjaro升级后,zsh的主题p10k出现的问题. Your git prompt may disappear or become slow. Run the following c ...
- Linux执行.sh文件,提示No such file or directory的问题
问题描述 在window平台下,写好shell脚本文件,迁移到linux平台,赋过可执行权限,执行该sh文件,却提示NO such file or directory 解决方案 难道是文件格式兼容性问 ...
- 算法、数据结构、与设计模式等在游戏开发中的运用 (一):单例设计(Singleton Design)
算法.数据结构.与设计模式等在游戏开发中的运用 (一):单例设计(Singleton Design) 作者: Compasslg 李涵威 1. 什么是单例设计(Singleton Design) 在学 ...