From 6522012065712fb0ece31bff9ff10b38a83b10e1 Mon Sep 17 00:00:00 2001 From: Michael Hunteman Date: Thu, 22 Sep 2022 10:14:04 -0500 Subject: Initial commit --- LongestPalindrome.java | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 LongestPalindrome.java (limited to 'LongestPalindrome.java') diff --git a/LongestPalindrome.java b/LongestPalindrome.java new file mode 100644 index 0000000..447bb27 --- /dev/null +++ b/LongestPalindrome.java @@ -0,0 +1,55 @@ +import java.lang.*; +import java.util.*; + +class LongestPalindrome { + public static String longestPalindrome(String s) { + // TODO: check if s length is 0 or 1 + // TODO: find simpler solution + + s = s.toLowerCase(); + char[] arr = s.toCharArray(); + String ans = null; + + int i = 0; + int j = 0; + int max = 0; + // Odd case: "aba" + for (int a = 1; a < arr.length - 1; a++) { + i = a - 1; + j = a + 1; + while (i >= 0 && j < arr.length) { + if (arr[i] == arr[j]) { + if (j - i > max) { + max = j - i; + ans = s.substring(i, j + 1); + } + i--; + j++; + } else { + break; + } + } + } + // Even case: "abba" + for (i = 0, j = i + 1; i < arr.length - 1; i++) { + while (i >= 0 && j < arr.length) { + if (arr[i] == arr[j]) { + if (j - i > max) { + max = j - i; + ans = s.substring(i, j + 1); + } + i--; + j++; + } else { + break; + } + } + } + return ans; + } + + public static void main(String[] args) { + String s = "kl;fadsjf;dalscbbciuporeqwrpo"; + System.out.println(longestPalindrome(s)); + } +} -- cgit v1.2.3