From 3b35cc17a024d8c2a5e533d713e6a2d74f8aed50 Mon Sep 17 00:00:00 2001 From: Sagar Monga <50130301+sagar-monga@users.noreply.github.com> Date: Thu, 7 Oct 2021 21:07:22 +0530 Subject: [PATCH] Add longest palindromic substring (#2379) --- Strings/LongestPalindromicSubstring.java | 44 ++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 Strings/LongestPalindromicSubstring.java diff --git a/Strings/LongestPalindromicSubstring.java b/Strings/LongestPalindromicSubstring.java new file mode 100644 index 000000000..993ac064c --- /dev/null +++ b/Strings/LongestPalindromicSubstring.java @@ -0,0 +1,44 @@ +// Longest Palindromic Substring +import java.util.Scanner;; + + +class LongestPalindromicSubstring { + public static void main(String[] args) { + Solution s = new Solution(); + String str = ""; + Scanner sc = new Scanner(System.in); + System.out.print("Enter the string: "); + str = sc.nextLine(); + System.out.println("Longest substring is : "+s.longestPalindrome(str)); + } +} + +class Solution { + public String longestPalindrome(String s) { + if (s == null || s.length() == 0) { + return ""; + } + int n = s.length(); + String maxStr = ""; + for (int i = 0; i < n; ++i) { + for (int j = i; j < n; ++j) { + if (isValid(s, i, j) == true) { + if (j - i + 1 > maxStr.length()) { // update maxStr + maxStr = s.substring(i, j + 1); + } + } + } + } + return maxStr; + } + + private boolean isValid(String s, int lo, int hi) { + int n = hi - lo + 1; + for (int i = 0; i < n / 2; ++i) { + if (s.charAt(lo + i) != s.charAt(hi - i)) { + return false; + } + } + return true; + } +}