题解 | #最长回文子串#

最长回文子串

https://www.nowcoder.com/practice/12e081cd10ee4794a2bd70c7d68f5507

// HJ85 最长回文子串.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include<iostream>
#include<bits/stdc++.h>

using namespace std;

int check(string s)//回文串check函数
{
	int len = s.size();//定义 s长度
	int count = 0;//临时记录回文串长度
	for (int i = 0; i <len; i++)//遍历此字符串
	{
		if (s[i] == s[len - i - 1])//逐位判断
			count ++;//计数加一(从头遍历到尾巴)
		else
			return 0;//判断有一位不是则直接抛弃截取的此子字符串
	}
	return count;//返回回文串的长度
}

int main()
{
	string s;
	while (cin >> s)
	{
		int res = 0;//定义一个结果记录最大回文子串
		int len = 0;//记录临时回文子串
		int le = s.size();//定义字符串的长度
		for (int i = 0; i <le; i++)//遍历字符串
		{
			for (int j = i; j <le; j++)//截取字符串
			{
				len = check(s.substr(i, j - i + 1));//判断此字符串是否为回文串并返回其回文串长度
				res = max(res, len);//反复找出最长的回文串
			}
		}
		cout << res << endl;//输出
	}
	return 0;
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务