1. 408刷题
  2. C/C++

Longest Palindromic Substring

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例 1:

输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。

示例 2:

输入: "cbbd"
输出: "bb"

1.常规方法

#include "cstdio"
#include "cstring"
int main()
{
	char str_in[128];
	char str[256];
	int curl, curr, cent;
	int max_len = 0, max_curl, max_curr;
	int j = 1;
	//输入字符串
	gets(str_in);
	//每个字符中间插入 # 
	for(int i = 0; i < strlen(str_in); i += 1, j += 2)
	{
		
		str[j-1] = str_in[i];
		str[j] = '#';
		
	}
	str[j] = '\0';
	//窗口滑动
	for(int i = 1; i < strlen(str); i++)
	{
		cent = i;
		curl = i - 1;
		curr = i + 1;
		while(curl >= 0 && curr < strlen(str) && str[curl] == str[curr])
		{
			curl --;
			curr ++;
		}
		if(curr - curl > max_len)
		{
			max_len = curr - curl;
			max_curl = curl;
			max_curr = curr;
		}
	}
	//打印结果
	for(int i = max_curl +1; i < max_curr; i++)
	{
		if(str[i] != '#')
			putchar(str[i]);
	}
	return 0;
}

2.马拉车算法