Skip to content

Commit d810a1d

Browse files
alxkmalxkm
and
alxkm
authored
test: LongestPalindromicSubstring (#5402)
* LongestPalindromicSubstring * fix Rule:CollapsibleIfStatements --------- Co-authored-by: alxkm <[email protected]>
1 parent 7674a84 commit d810a1d

File tree

2 files changed

+34
-26
lines changed

2 files changed

+34
-26
lines changed

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

+13-26
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,31 @@
11
package com.thealgorithms.strings;
22

3-
// Longest Palindromic Substring
4-
import java.util.Scanner;
5-
63
final class LongestPalindromicSubstring {
74
private LongestPalindromicSubstring() {
85
}
96

10-
public static void main(String[] args) {
11-
Solution s = new Solution();
12-
String str = "";
13-
Scanner sc = new Scanner(System.in);
14-
System.out.print("Enter the string: ");
15-
str = sc.nextLine();
16-
System.out.println("Longest substring is : " + s.longestPalindrome(str));
17-
sc.close();
18-
}
19-
}
20-
21-
class Solution {
22-
23-
public String longestPalindrome(String s) {
24-
if (s == null || s.length() == 0) {
7+
/**
8+
* Finds the longest palindromic substring in the given string.
9+
*
10+
* @param s the input string
11+
* @return the longest palindromic substring
12+
*/
13+
public static String longestPalindrome(String s) {
14+
if (s == null || s.isEmpty()) {
2515
return "";
2616
}
27-
int n = s.length();
2817
String maxStr = "";
29-
for (int i = 0; i < n; ++i) {
30-
for (int j = i; j < n; ++j) {
31-
if (isValid(s, i, j)) {
32-
if (j - i + 1 > maxStr.length()) { // update maxStr
33-
maxStr = s.substring(i, j + 1);
34-
}
18+
for (int i = 0; i < s.length(); ++i) {
19+
for (int j = i; j < s.length(); ++j) {
20+
if (isValid(s, i, j) && (j - i + 1 > maxStr.length())) {
21+
maxStr = s.substring(i, j + 1);
3522
}
3623
}
3724
}
3825
return maxStr;
3926
}
4027

41-
private boolean isValid(String s, int lo, int hi) {
28+
private static boolean isValid(String s, int lo, int hi) {
4229
int n = hi - lo + 1;
4330
for (int i = 0; i < n / 2; ++i) {
4431
if (s.charAt(lo + i) != s.charAt(hi - i)) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.thealgorithms.strings;
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+
class LongestPalindromicSubstringTest {
11+
12+
@ParameterizedTest
13+
@MethodSource("provideTestCasesForLongestPalindrome")
14+
void testLongestPalindrome(String input, String expected) {
15+
assertEquals(expected, LongestPalindromicSubstring.longestPalindrome(input));
16+
}
17+
18+
private static Stream<Arguments> provideTestCasesForLongestPalindrome() {
19+
return Stream.of(Arguments.of("babad", "bab"), Arguments.of("cbbd", "bb"), Arguments.of("a", "a"), Arguments.of("", ""), Arguments.of("abc", "a"), Arguments.of(null, ""), Arguments.of("aaaaa", "aaaaa"));
20+
}
21+
}

0 commit comments

Comments
 (0)