每日一练2022-12-10 小艺照镜子 题解

题目名称:小艺照镜子

时间限制:1000ms内存限制:256M

题目描述

已知字符串str。 输出字符串str中最长回文串的长度。

输入描述:

输入字符串s.(1<=len(str)<=10000)

输出描述:

输出答案

示例 

示例1

输入abab复制

输出3复制

提示

基本思路:枚举中间点,向两边拓展,拓展到两边都不相同后停止,计算答案,统计完最后输出最大值。

参考代码:

#include 
using namespace std;
char s[100005];//数组开外面不容易炸。
int main(){
	  int n = 0, ans = 1;//定义变量,初始化。
	  char ch;
	  while ((ch = getchar()) != EOF) s[++n] = ch;//只要有输入就读入数据。
	  for (int i = 1; i <= n; i++){
		    int l = i, r = i;//定义左右两端,初始化为中间数。
		    while (s[l - 1] == s[r + 1] && l > 1&& r <= n) l--, r++;//奇数。
		    ans = max(ans, r - l + 1);//更新最大值。
		    l = i, r = i + 1;
		    if (s[l] != s[r]) continue;
		    while (s[l - 1] == s[r + 1] && l > 1 && r <= n)l--, r++;//偶数。
		    ans = max(ans, r - l + 1);//更新最大值。
	  }
	  printf("%d\n", ans);//输出最大值。
      return 0;//好习惯。
}

AC记录

每日一练2022-12-10 小艺照镜子 题解_第1张图片

 临走你不给个赞吗?~

你可能感兴趣的:(c++,开发语言)