From 766e9729243cd16357555ff4d1e8ece8166337f7 Mon Sep 17 00:00:00 2001 From: bourne-3 <595962708@qq.com> Date: Sun, 7 Nov 2021 18:59:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=80=E9=95=BF=E5=9B=9E=E6=96=87=E5=AD=97?= =?UTF-8?q?=E4=B8=B2Java=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0005.最长回文子串.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/problems/0005.最长回文子串.md b/problems/0005.最长回文子串.md index c78b827c..bd572060 100644 --- a/problems/0005.最长回文子串.md +++ b/problems/0005.最长回文子串.md @@ -265,6 +265,32 @@ public: ## Java ```java +// 双指针 中心扩散法 +class Solution { + public String longestPalindrome(String s) { + String s1 = ""; + String s2 = ""; + String res = ""; + for (int i = 0; i < s.length(); i++) { + // 分两种情况:即一个元素作为中心点,两个元素作为中心点 + s1 = extend(s, i, i); // 情况1 + res = s1.length() > res.length() ? s1 : res; + s2 = extend(s, i, i + 1); // 情况2 + res = s2.length() > res.length() ? s2 : res; + } + return res; // 返回最长的 + } + public String extend(String s, int start, int end){ + String tmp = ""; + while (start >= 0 && end < s.length() && s.charAt(start) == s.charAt(end)){ + tmp = s.substring(start, end + 1); // Java中substring是左闭右开的,所以要+1 + // 向两边扩散 + start--; + end++; + } + return tmp; + } +} ``` ## Python @@ -292,11 +318,13 @@ class Solution: ## Go ```go + ``` ## JavaScript ```js + ``` -----------------------