Skip to content

Commit 6927485

Browse files
authored
Enhance README with problem explanation and solution
Added a detailed explanation of the Longest Palindromic Substring problem solution in Java, including constraints and implementation steps.
1 parent 0295b4d commit 6927485

File tree

1 file changed

+64
-1
lines changed
  • src/main/java/g0001_0100/s0005_longest_palindromic_substring

1 file changed

+64
-1
lines changed

src/main/java/g0001_0100/s0005_longest_palindromic_substring/readme.md

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,67 @@ Given a string `s`, return _the longest_ _palindromic_ **substring** in `s`.
2121
**Constraints:**
2222

2323
* `1 <= s.length <= 1000`
24-
* `s` consist of only digits and English letters.
24+
* `s` consist of only digits and English letters.
25+
26+
To solve the Longest Palindromic Substring problem in Java using a `Solution` class, we'll follow these steps:
27+
28+
1. Define a `Solution` class with a method named `longestPalindrome`.
29+
2. Initialize variables to keep track of the start and end indices of the longest palindromic substring found so far (`start` and `end`).
30+
3. Iterate through the string `s`:
31+
- For each character in the string, expand around it to check if it forms a palindrome.
32+
- Handle both odd-length and even-length palindromes separately.
33+
- Update `start` and `end` indices if a longer palindrome is found.
34+
4. Return the substring from `start` to `end`.
35+
5. Handle edge cases where the input string is empty or has a length of 1.
36+
37+
Here's the implementation:
38+
39+
```java
40+
public class Solution {
41+
42+
public String longestPalindrome(String s) {
43+
if (s == null || s.length() < 1) return "";
44+
int start = 0;
45+
int end = 0;
46+
47+
for (int i = 0; i < s.length(); i++) {
48+
int len1 = expandAroundCenter(s, i, i);
49+
int len2 = expandAroundCenter(s, i, i + 1);
50+
int len = Math.max(len1, len2);
51+
if (len > end - start) {
52+
start = i - (len - 1) / 2;
53+
end = i + len / 2;
54+
}
55+
}
56+
57+
return s.substring(start, end + 1);
58+
}
59+
60+
private int expandAroundCenter(String s, int left, int right) {
61+
while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) {
62+
left--;
63+
right++;
64+
}
65+
return right - left - 1;
66+
}
67+
68+
public static void main(String[] args) {
69+
Solution solution = new Solution();
70+
71+
// Test cases
72+
String s1 = "babad";
73+
System.out.println("Example 1 Output: " + solution.longestPalindrome(s1));
74+
75+
String s2 = "cbbd";
76+
System.out.println("Example 2 Output: " + solution.longestPalindrome(s2));
77+
78+
String s3 = "a";
79+
System.out.println("Example 3 Output: " + solution.longestPalindrome(s3));
80+
81+
String s4 = "ac";
82+
System.out.println("Example 4 Output: " + solution.longestPalindrome(s4));
83+
}
84+
}
85+
```
86+
87+
This implementation provides a solution to the Longest Palindromic Substring problem in Java.

0 commit comments

Comments
 (0)