Last active
November 22, 2016 19:00
-
-
Save amitsaurav/b4672c7d58b4a523ddc8f5242ba8c331 to your computer and use it in GitHub Desktop.
Code to generate "Palindrome Cover".
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.*; | |
import java.util.*; | |
class Palindrome { | |
public static void main(String[] args) { | |
List<String> palindromes = Arrays.asList("gabbag", "baggab"); | |
System.out.println(getShortestCover(palindromes)); | |
} | |
private static Set<String> getShortestCover(List<String> palindromes) { | |
Set<String> cover = new HashSet<>(); | |
for (String p : palindromes) { | |
cover.addAll(getPair(p)); | |
} | |
return cover; | |
} | |
private static List<String> getPair(String palindrome) { | |
if (palindrome == null || palindrome.length() < 2) { | |
throw new IllegalArgumentException("Incorrect palindrome: " + palindrome); | |
} | |
List<String> pairs = new ArrayList<>(); | |
if (palindrome.length() == 2) { | |
pairs.add(String.valueOf(palindrome.charAt(0))); | |
pairs.add(String.valueOf(palindrome.charAt(1))); | |
} else { | |
pairs.add(palindrome.substring(0, palindrome.length() / 2)); | |
pairs.add(palindrome.substring(palindrome.length() / 2)); | |
} | |
return pairs; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment