PAT甲级1040. Longest Symmetric String (25)
2017-02-28 18:40
309 查看
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)最长回文串长度为奇数:以字符串中的所有单个字符串为中心,往两边扩散找最长的;2)最长回文串长度为偶数:以字符串中出现的成对字符串为中心,往两边扩散找最长的。
此题还可以用动态规划法:http://blog.csdn.net/tuzigg123/article/details/47053481
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)最长回文串长度为奇数:以字符串中的所有单个字符串为中心,往两边扩散找最长的;2)最长回文串长度为偶数:以字符串中出现的成对字符串为中心,往两边扩散找最长的。
此题还可以用动态规划法:http://blog.csdn.net/tuzigg123/article/details/47053481
#include <iostream> using namespace std; #include <string> int main(){ string str; getline(cin,str);//注意事项:有空格要用getline int maxLen=0; int currentLen=0; int j=0; /*奇数的情况*/ for(int i=0;i<str.length();i++){ currentLen=1; j=1; while(i-j>=0&&i+j<str.length()){ if(str[i+j]==str[i-j]) { currentLen+=2; j++; } else break; } if(currentLen>maxLen) maxLen=currentLen; } /*偶数的情况*/ for(int i=0;i<str.length()-1;i++){ if(str[i]!=str[i+1]) continue; currentLen=2; j=1; while(i-j>=0&&i+1+j<str.length()){ if(str[i-j]==str[i+1+j]) { currentLen+=2; j++; } else break; } if(currentLen>maxLen) { maxLen=currentLen; 4000 } } cout<<maxLen; return 0; }
相关文章推荐
- PAT甲级 1040. Longest Symmetric String (25)
- PAT 甲级 1040. Longest Symmetric String (25)
- 1040. Longest Symmetric String (25)-PAT甲级真题
- 【PAT甲级】1040. Longest Symmetric String (25)
- 1110. Complete Binary Tree (25)-PAT甲级真题
- 1086. Tree Traversals Again (25)-PAT甲级真题
- PAT甲级 1029. Median (25)
- PAT甲级1036. Boys vs Girls (25)
- 【PAT】【Advanced Level】1040. Longest Symmetric String (25)
- 1075. PAT Judge (25)-PAT甲级真题
- 1021. Deepest Root (25)-PAT甲级真题(图的遍历,dfs,连通分量的个数)
- 【PAT甲级】1002. A+B for Polynomials (25)
- 【PAT甲级】1009. Product of Polynomials (25)
- PAT甲级-1002. A+B for Polynomials (25)多项式
- PAT甲级-1009. Product of Polynomials (25)一元多项式相乘
- 【PAT甲级】1021. Deepest Root (25)
- PAT 1129. Recommendation System (25) 甲级
- pat甲级1009. Product of Polynomials (25)
- PAT 甲级 1007. Maximum Subsequence Sum (25)
- 1133. Splitting A Linked List (25)-PAT甲级真题