Skip to content
Closed
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
0172c29
Added New Java file in Java/Misc
AzadN Nov 4, 2020
ee34da4
Update largestRange.java
AzadN Nov 4, 2020
4bee137
Update largestRange.java
AzadN Nov 4, 2020
603e010
Update largestRange.java
AzadN Nov 4, 2020
a6f88cd
Update largestRange.java
AzadN Nov 4, 2020
000b7da
Merge pull request #1 from AzadN/Largest_Range
AzadN Nov 4, 2020
9e1c963
Revert "Largest range"
AzadN Nov 4, 2020
42c3aec
Merge pull request #2 from AzadN/revert-1-Largest_Range
AzadN Nov 4, 2020
a382936
Added WordBoggle.java
AzadN Nov 4, 2020
fc6edff
Merge branch 'master' of https://github.com/AzadN/Java
AzadN Nov 4, 2020
cab263e
Update WordBoggle.java
AzadN Nov 4, 2020
ffbc3b1
Added RangeInSortedArray.java in Java/Misc
AzadN Nov 4, 2020
aeddf97
Merge branch 'master' of https://github.com/AzadN/Java
AzadN Nov 4, 2020
3a6ad5c
Added MinSubstrContainingChars.java in Java/strings
AzadN Nov 4, 2020
e72d622
Added new Java file LongestSubstringWithoutDuplication.java
AzadN Nov 4, 2020
bf0c6f9
Added GenerateBalancedParenthesis.java
AzadN Nov 4, 2020
5adb4fc
Added New File HappyNumber.java in Java/Maths
AzadN Nov 4, 2020
4819b55
Added Manacher's Algorithm's implementation
AzadN Nov 4, 2020
7660026
Added TopoSortKahn.java to Java/Misc
AzadN Nov 4, 2020
633ec4a
Adding O(n^2) implementation of Longest Palindromic Substring
AzadN Nov 4, 2020
11ac9c8
Adding properly formatted O(n^2) implementation of Longest Palindromi…
AzadN Nov 4, 2020
9eeff4a
Rename longestPalindromicSubstring.java to LongestPalindromicSubstrin…
AzadN Nov 4, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions strings/LongestPalindromicSubstring.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package strings;

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add proper problem statement so that it become easy for begginers to understand. As the soul purpose of these implementations is for educational purpose.

public class LongestPalindromicSubstring {

public static String getLPS(String s) {
if (s.length() == 0) return "";

// If string has same character, no computations needed.
if (s.replace(String.valueOf(s.charAt(0)), "").length() == 0) return s;

String current = s.substring(0, 1);
for (int i = 1; i < s.length(); i++) {
// Try to expand the palindrome using the ith character
String odd = getLPSFrom(s, i - 1, i + 1); // Considers centre
String even = getLPSFrom(s, i - 1, i); // Considers no centre
// Comparator<String> strlenComp = (a, b) -> Integer.compare(a.length(), b.length());
// int longest=strlenComp.compare(odd,even);
String longest = (odd.length() > even.length()) ? odd : even;
if (longest.length() > current.length()) current = longest;
}
return current;
}

// Check whether a substring starting from left to right index is a palindrome or not
public static String getLPSFrom(String s, int left, int right) {
while (left >= 0 && right < s.length()) {
if (s.charAt(left) != s.charAt(right)) break;
left--;
right++;
}
return s.substring(left + 1, right);
}

public static void main(String[] args) {
// Testcases
assert getLPS("abcbadefef").equals("abcba");
assert getLPS("saeedogeeseseegodabsds").equals("dogeeseseegod");
assert getLPS("uncopyrightable").equals("u");
}
}