自己敲的代码
#include<cstdio>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
int change(string str, int i, int j) {
// (1)i == st, j == st;
// (2) i == st, j == st + 1;
int len = str.size();
while(str[i] == str[j] && i >= 0 && j < len) {
i --;
j ++;
}
return j - i -1;
}
int main()
{
string str;
getline(cin, str);
int len = str.size();
if(len == 0 ) {
printf("0");
return 0;
}
int maxLen = 1;
for(int st = 0; st < len - 1; st ++) {
int len1 = change(str, st, st + 1);
int len2 = change(str, st, st);
maxLen = max(maxLen, max(len1, len2));
}
printf("%d",maxLen);
}
想法
用了getline, 直接输入一整行string, 非常简便, 之前遇到这个问题, 我一般是用c语言的 char 类型数组, 这下方便多了
由于有两个中心, 分别是 A, 和AA 两种类型, 由于用的方法相同, 故在主函数外构造一个新的函数, 直接调用, 简单了很多。
挺简单的, 纯粹自己做。 我记得当初看动态规划之前, 这个问题想了有一个多小时。 就想到奇偶中心问题, 镜像解决, 但是只是模糊的宏观感受, 没有细节, 也不确定。 之后, 在leetcode上用动态规划解决了, 同时发现有Java写的中心扩展, 扫了几眼, 没看懂, 自己想, 5分钟, 在纸上写完思路, 敲完代码, pta测试, 完美通过。
果然要多思考!独立思考!