JSFiddle - React, Tailwind, and code Playground

by CommandLineDesign

JavaScript

function buildPalindrome(str) {
	var checkPalindrome = function(element){
  	var len = element.length;
    var halfOne = element.slice(0, len/2); 
    var halfTwo = element.slice(len/2, len);
    if(element.length % 2 !== 0){
    	halfTwo = element.slice((len/2)+1, len);
    }
    return halfOne == halfTwo.split('').reverse('').join('');
  }
 
  //Work backwards through the string, check if there is an existing Paindrome
  var checkArray = str.split('').reverse('');
  var partial = '';
  var result = '';
  
  for(var i = 0; i < checkArray.length; i++){
  	partial += checkArray[i];
    if(checkPalindrome(partial)){
    	result = partial;
    }
  }
  
  if(result.length){
  	//Reverse the remaining chars and add them to the end of the string.
    result = checkArray.join('').split(result).join('').split('').reverse();
    result.push(checkArray);
    result = result.join(',').replace(new RegExp(',', 'g'), '');
  }
   var i = 0;
   while(!checkPalindrome(result)){
    result = result + result.slice(result.length -(i+2), result.length - (i+1));
    i=i+2;

  }

  return result;
}

console.log('Final Answer: ' + buildPalindrome('caabc'))