1040. Longest Symmetric String (25)
来源:互联网 发布:深圳蛇口招商网络宽带 编辑:程序博客网 时间:2024/05/23 01:18
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
算法分析:由于数据比较小,采用穷举算法,还可以用动态规划。
1. 对于字符串中的每个字符的下标s[i],首先考虑s[i]是否等于s[i - 1],如果相等则继续比较s[i - 2]和s[i + 1];
2. 然后考虑s[i - 1]是否等于s[i + 1],如果相等则继续比较s[i - 2]和s[i + 2];
3. 在进行比较的同时还要更新回文串的长度。
这里举出一种动态规划算法,但是感觉计算复杂度都一样为
#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ int i, maxlen = 1; char s[1001] = { '\0' }; gets(s); int len = strlen(s); for (i = 1; i < len; i++) { int front, tail, cl = 0; if (s[i] == s[i - 1]) { cl = 0; //比较s[i-1]和s[i] for (front = i - 1, tail = i; front >= 0 && tail < len; front--, tail++) if (s[front] == s[tail]) cl += 2; else break; } else if (s[i - 1] == s[i + 1]) { cl = 1; //注意这里初值为1 //比较s[i-1]和s[i+1] for(front = i - 1, tail = i + 1; front >= 0 && tail < len; front--, tail++) if (s[front] == s[tail]) cl += 2; else break; } if (cl > maxlen) maxlen = cl; } printf("%d\n", maxlen); system("pause"); return 0;}
阅读全文
0 0
- 1040. Longest Symmetric String (25)
- 1040. Longest Symmetric String (25)
- 1040. Longest Symmetric String (25)
- 1040. Longest Symmetric String (25)
- 1040. Longest Symmetric String (25)
- 1040. Longest Symmetric String (25)
- 1040. Longest Symmetric String (25)
- 1040. Longest Symmetric String (25)
- 1040. Longest Symmetric String (25)
- 1040. Longest Symmetric String (25)
- 1040. Longest Symmetric String (25)
- 1040. Longest Symmetric String (25)
- 1040. Longest Symmetric String (25)
- 1040. Longest Symmetric String (25)
- 1040. Longest Symmetric String (25)
- 1040. Longest Symmetric String (25)
- 1040. Longest Symmetric String (25)
- 1040. Longest Symmetric String (25)
- Webstorm安装Less
- 函数的注册与回调【经验】
- 史上最全Java基础视频教程
- Linux下的Spark安装及使用
- 微信开发上传图片ios与安卓兼容问题
- 1040. Longest Symmetric String (25)
- Eclipse/MyEclipse的基本使用
- STM32 IAP 在线升级详解
- Python装饰器
- 【best-time-to-buy-and-sell-stock】
- C#文件及文件夹操作示例
- 好记性不如烂笔头,记录一下 ORA-30004 :使用sys_connect_by_path 函数时,不能将分隔符作为列值的一部分
- CSS@keyframes使用方法
- java读取工程配置文件内容