Skip to content

Commit c413f3c

Browse files
alxkmalxkm
and
alxkm
authored
refactor: LongestPalindromicSubstring (#5420)
* refactor: LongestPalindromicSubstring * checkstyle: fix formatting --------- Co-authored-by: alxkm <[email protected]>
1 parent 45563cc commit c413f3c

File tree

2 files changed

+30
-15
lines changed

2 files changed

+30
-15
lines changed

src/main/java/com/thealgorithms/dynamicprogramming/LongestPalindromicSubstring.java

+8-15
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,18 @@
11
package com.thealgorithms.dynamicprogramming;
22

3-
/*
4-
* Algorithm explanation https://leetcode.com/problems/longest-palindromic-substring/
3+
/**
4+
* Class for finding the longest palindromic substring within a given string.
5+
* <p>
6+
* A palindromic substring is a sequence of characters that reads the same backward as forward.
7+
* This class uses a dynamic programming approach to efficiently find the longest palindromic substring.
8+
*
59
*/
610
public final class LongestPalindromicSubstring {
711
private LongestPalindromicSubstring() {
812
}
913

10-
public static void main(String[] args) {
11-
String a = "babad";
12-
String b = "cbbd";
13-
14-
String aLPS = lps(a);
15-
String bLPS = lps(b);
16-
17-
System.out.println(a + " => " + aLPS);
18-
System.out.println(b + " => " + bLPS);
19-
}
20-
21-
private static String lps(String input) {
22-
if (input == null || input.length() == 0) {
14+
public static String lps(String input) {
15+
if (input == null || input.isEmpty()) {
2316
return input;
2417
}
2518
boolean[][] arr = new boolean[input.length()][input.length()];
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.thealgorithms.dynamicprogramming;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
5+
import java.util.stream.Stream;
6+
import org.junit.jupiter.params.ParameterizedTest;
7+
import org.junit.jupiter.params.provider.Arguments;
8+
import org.junit.jupiter.params.provider.MethodSource;
9+
10+
public class LongestPalindromicSubstringTest {
11+
12+
private static Stream<Arguments> provideTestCases() {
13+
return Stream.of(
14+
Arguments.of("babad", "aba"), Arguments.of("cbbd", "bb"), Arguments.of("a", "a"), Arguments.of("x", "x"), Arguments.of("", ""), Arguments.of("aaaa", "aaaa"), Arguments.of("mm", "mm"), Arguments.of("level", "level"), Arguments.of("bananas", "anana"), Arguments.of("abacabad", "abacaba"));
15+
}
16+
17+
@ParameterizedTest
18+
@MethodSource("provideTestCases")
19+
public void testLps(String input, String expected) {
20+
assertEquals(expected, LongestPalindromicSubstring.lps(input));
21+
}
22+
}

0 commit comments

Comments
 (0)