if (n < 2) { return a.length(); } int maxLen = 1; boolean[][] dp = new boolean[n][n]; for (int right = 1; right < n; right++) { for (int left = 0; left <= right; left++) { if (a.charAt(left) != a.charAt(right)) { continue; } if (right == left) { dp[left][right] = true; } else if (right - left < 3) { dp[left][right] = true; } else { dp[left][right] = dp[left + 1][right - 1]; } if (dp[left][right] && right - left + 1 > maxLen) { maxLen = right - left + 1; } } } return maxLen;
点赞

相关推荐

不愿透露姓名的神秘牛友
06-26 14:50
人力小鱼姐:有后面墨迹那两句的时间问题早回答完了
点赞 评论 收藏
分享
仁者伍敌:难怪小公司那么挑剔,让你们这些大佬把位置拿了
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务