This is a personal fav of mine…. create any string to the shortest possible palindromes ….
package palindromeCheck;
/**
* Converts any string into the shortest possible Palindromes ..
* @author sphukan
*
*/
public class Palindromer {
private String palindromeIt(String text,int startIndex,int endIndex,boolean fromRightToLeft){
if (startIndex==endIndex ){
return text;
} else {
char startChar=text.charAt(startIndex);
char endChar=text.charAt(endIndex);
if (startChar == endChar){ //Is a Palindrome…
if (startIndex >= endIndex ) { //Index crossed over …. end check
return text;
}else{
return palindromeIt(text,++startIndex,–endIndex,fromRightToLeft);
}
}else { //Not a Palindrome….Reconstruct
//Not good…iterates over checked indices
if (fromRightToLeft) {
return palindromeIt(text.substring(0,startIndex)+endChar+text.substring(startIndex));
} else {
return palindromeIt(text.substring(0,endIndex)+endChar+startChar+text.substring(endIndex+1));
}
}
}
}
private String palindromeIt(String text){
String result1=palindromeIt(text,0,text.length()-1,false); //From Left2Right
String result2=palindromeIt(text,0,text.length()-1,true); //From Right2Left
return (result1.length()==result2.length() && !result1.equals(result2))?result1+”\n”+result2:(result1.length()==result2.length())?result1:(result1.length()<result2.length())?result1:result2;
}
public static void main(String[] a){
System.out.println(“Shortest Palindrome(s) Possible:\n”+new Palindromer().palindromeIt(“TEST”));
}
}
Output:
Shortest Palindrome(s) Possible:
TESET
TSEST



