Skip to content

Instantly share code, notes, and snippets.

@amitsaurav
Last active November 22, 2016 19:00
Show Gist options
  • Save amitsaurav/b4672c7d58b4a523ddc8f5242ba8c331 to your computer and use it in GitHub Desktop.
Save amitsaurav/b4672c7d58b4a523ddc8f5242ba8c331 to your computer and use it in GitHub Desktop.
Code to generate "Palindrome Cover".
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