1040 Longest Symmetric String

原创 2015年11月21日 10:11:45

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

#include<iostream>
#include<string>
using namespace std;
int main(){
	for(string str;getline(cin,str);){
		int max_length = 1;
		for(int i = 0; i < str.length();i++){
			int length1 = 1;
			int length2 = 1;
			//判断长度为偶数的情况
			int index_1 = i;
			int index_2 = i+1;
			if(index_1 < 0 || index_2 >= str.length()){
				continue;
			}
			if(str[index_1] == str[index_2]){
				length1 = 2;
				while(1){
					index_1--;
					index_2++;
					if(index_1 < 0  || index_2 >= str.length()){
						break;
					}
					if(str[index_1] == str[index_2]){
						length1+=2;
					}else{
						break;
					}
				}
			}
			//判断长度为奇数的情况
			index_1 = i-1;
			index_2 = i+1;
			if(index_1 < 0 || index_2 >= str.length()){
				continue;
			}
			if(str[index_1] == str[index_2]){
				length2 = 3;
				while(1){
					index_1--;
					index_2++;
					if(index_1 < 0 || index_2 >= str.length()){
						break;
					}
					if(str[index_1] == str[index_2]){
						length2+= 2;
					}else{
						break;
					}
				}
			}
			if(length1 > max_length){
				max_length = length1;
			}
			if(length2 > max_length){
				max_length = length2;
			}
		}
		cout<<max_length<<endl;
	}
	return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

pat1040Longest Symmetric String (25)

题意分析: (1)给出一串字符串,求出其中最长的回文字串的长度 (2)比较简单的做法是从第一个字符开始,依次同时向两边扩散检索,直至扫描整个字符串串结束。但需要注意子字符串长度为奇数和偶数时他们的扫描...

1040. Longest Symmetric String (25)

发现以前做过了; 求最长的回文串长度;就是吧所有的可能都求一下,得出最长,这里利用了“/”取模特性,把奇数和偶数的情况一起讨论了 联动以前做的友缘函数模版或者看后面贴的...

PAT 甲级 1040. Longest Symmetric String

这个是求字符串的最大回文字串,如果按照动态规划的做法,时间复杂度是o(n^2) 这里分享一个时间复杂度为o(n)的做法,因为前不久在leetcode上面看到过,所以做PAT的时候就很快写出来了。 #i...

1040. Longest Symmetric String

题目链接:http://pat.zju.edu.cn/contests/pat-a-practise/1040 暴力 // 暴力破解 // 分类讨论 #include #include #in...
  • Staibin
  • Staibin
  • 2014年03月17日 21:26
  • 498

1040.Longest Symmetric String

【题意】         找出给的字符串中最长对称子串的长度 【思路】         对长度分奇偶数分别进行二分查找,对于每个查找的长度判断是否存在该长度的对称子串,若存在则更新'left'指针...

PAT (Advanced Level) Practise 1040 Longest Symmetric String (25)

1040. Longest Symmetric String (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 ...

【leetcode】String——Longest Valid Parentheses(32)

题目: Given a string containing just the characters '(' and ')', find the length of the longest v...

LeetCode-string-Longest Substring Without Repeating Characters

题目: Given a string, find the length of the longest substring without repeating characters. Example...

LeetCode 14 Longest Common Prefix(最长公共前缀)(String)

翻译写一个函数(或方法)来寻找一个字符串数组中的最长公共前缀。原文Write a function to find the longest common prefix string amongst a...
  • NoMasp
  • NoMasp
  • 2015年10月16日 22:05
  • 5791

linux kernel data struct : find longest sub string

今天我们来看看面试 C 中常见,而且比较刁钻的题目: 找出两个字符串中的最大相同子串,如: str1: "mmmabckkk" str2: "oabclll" 那么最大相同子串为:abc 以...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:1040 Longest Symmetric String
举报原因:
原因补充:

(最多只允许输入30个字)