题解 | #密码截取#
密码截取
https://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1
#include <stdio.h> #include <string.h> char str[2501]; int main() { gets(str); int len=strlen(str); int max=0; for(int i=0;i<len;i++) { int left=i,right=i+1; while(str[left]==str[right]&&right<len&&left>=0) { left--; right++; } max=max>(right-left-1)?max:(right-left-1); left=i-1; right=i+1; while(str[left]==str[right]&&right<len&&left>=0) { left--; right++; } max=max>(right-left-1)?max:(right-left-1); } printf("%d",max); return 0; }
此题其实就是为了找出最长回文子串,需要分为两种情况:
(1)子串长度为奇数
(2)子串长度为偶数
使用的方法为中间开花
需要注意的是右指针的值只要小于len即可,不用小于len-1。