Posted on by Kalkicode
Code String

Minimum number of append character needed to make a string palindrome

Here given code implementation process.

/*
  Java program for
  Minimum number of append character needed to make a string palindrome
*/
public class Palindrome
{
	// Check that suffix of string is part of palindrome or not
	public boolean isSuffixPalindrome(String text, int s, int e)
	{
		int i = s;
		int j = e;
		while (i < j)
		{
			if (text.charAt(i) != text.charAt(j))
			{
				// When not a palindrome
				return false;
			}
			i++;
			j--;
		}
		// When yes
		return true;
	}
	public void makePalindromeByAppend(String text)
	{
		if (text.length() == 0)
		{
			return;
		}
		int count = -1;
		// Get the length of text
		int n = text.length();
		// Executing this loop through by size of text length
		for (int i = 0; i < n && count == -1; ++i)
		{
			if (text.charAt(i) == text.charAt(n - 1) && 
                isSuffixPalindrome(text, i, n - 1))
			{
				// When suffix i..n is palindrome
				count = i;
			}
		}
		// Display given text
		System.out.println(" Given Text : " + text);
		System.out.println(" Need to append " + count + " characters");
	}
	public static void main(String[] args)
	{
		Palindrome task = new Palindrome();
		// Test Inputs
		// Case A
		// Text : 123443
		//  12  3443 21  [Add 21 at end] 
		// 12344321 => palindrome
		// Result : 2
		task.makePalindromeByAppend("123443");
		// Case B
		// Text : faafcdc
		// faaf cdc faaf [Add faaf at end]
		// faafcdcfaaf => palindrome
		// Result : 4
		task.makePalindromeByAppend("faafcdc");
		// Case C
		// Text : 121
		// 121 it's already palindrome
		// Result : 0
		task.makePalindromeByAppend("121");
		// Case D
		// Text : 1236
		// 123 6 321 
		// Result : 3
		task.makePalindromeByAppend("1236");
	}
}

Output

 Given Text : 123443
 Need to append 2 characters
 Given Text : faafcdc
 Need to append 4 characters
 Given Text : 121
 Need to append 0 characters
 Given Text : 1236
 Need to append 3 characters
// Include header file
#include <iostream>
#include <string>

using namespace std;
/*
  C++ program for
  Minimum number of append character needed to make a string palindrome
*/
class Palindrome
{
	public:
		// Check that suffix of string is part of palindrome or not
		bool isSuffixPalindrome(string text, int s, int e)
		{
			int i = s;
			int j = e;
			while (i < j)
			{
				if (text[i] != text[j])
				{
					// When not a palindrome
					return false;
				}
				i++;
				j--;
			}
			// When yes
			return true;
		}
	void makePalindromeByAppend(string text)
	{
		if (text.length() == 0)
		{
			return;
		}
		int count = -1;
		// Get the length of text
		int n = text.length();
		// Executing this loop through by size of text length
		for (int i = 0; i < n && count == -1; ++i)
		{
			if (text[i] == text[n - 1] && 
                this->isSuffixPalindrome(text, i, n - 1))
			{
				// When suffix i..n is palindrome
				count = i;
			}
		}
		// Display given text
		cout << " Given Text : " << text << endl;
		cout << " Need to append " << count << " characters" << endl;
	}
};
int main()
{
	Palindrome *task = new Palindrome();
	// Test Inputs
	// Case A
	// Text : 123443
	//  12  3443 21  [Add 21 at end] 
	// 12344321 => palindrome
	// Result : 2
	task->makePalindromeByAppend("123443");
	// Case B
	// Text : faafcdc
	// faaf cdc faaf [Add faaf at end]
	// faafcdcfaaf => palindrome
	// Result : 4
	task->makePalindromeByAppend("faafcdc");
	// Case C
	// Text : 121
	// 121 it's already palindrome
	// Result : 0
	task->makePalindromeByAppend("121");
	// Case D
	// Text : 1236
	// 123 6 321 
	// Result : 3
	task->makePalindromeByAppend("1236");
	return 0;
}

Output

 Given Text : 123443
 Need to append 2 characters
 Given Text : faafcdc
 Need to append 4 characters
 Given Text : 121
 Need to append 0 characters
 Given Text : 1236
 Need to append 3 characters
// Include namespace system
using System;
/*
  Csharp program for
  Minimum number of append character needed to make a string palindrome
*/
public class Palindrome
{
	// Check that suffix of string is part of palindrome or not
	public Boolean isSuffixPalindrome(String text, int s, int e)
	{
		int i = s;
		int j = e;
		while (i < j)
		{
			if (text[i] != text[j])
			{
				// When not a palindrome
				return false;
			}
			i++;
			j--;
		}
		// When yes
		return true;
	}
	public void makePalindromeByAppend(String text)
	{
		if (text.Length == 0)
		{
			return;
		}
		int count = -1;
		// Get the length of text
		int n = text.Length;
		// Executing this loop through by size of text length
		for (int i = 0; i < n && count == -1; ++i)
		{
			if (text[i] == text[n - 1] && 
                this.isSuffixPalindrome(text, i, n - 1))
			{
				// When suffix i..n is palindrome
				count = i;
			}
		}
		// Display given text
		Console.WriteLine(" Given Text : " + text);
		Console.WriteLine(" Need to append " + count + " characters");
	}
	public static void Main(String[] args)
	{
		Palindrome task = new Palindrome();
		// Test Inputs
		// Case A
		// Text : 123443
		//  12  3443 21  [Add 21 at end] 
		// 12344321 => palindrome
		// Result : 2
		task.makePalindromeByAppend("123443");
		// Case B
		// Text : faafcdc
		// faaf cdc faaf [Add faaf at end]
		// faafcdcfaaf => palindrome
		// Result : 4
		task.makePalindromeByAppend("faafcdc");
		// Case C
		// Text : 121
		// 121 it's already palindrome
		// Result : 0
		task.makePalindromeByAppend("121");
		// Case D
		// Text : 1236
		// 123 6 321 
		// Result : 3
		task.makePalindromeByAppend("1236");
	}
}

Output

 Given Text : 123443
 Need to append 2 characters
 Given Text : faafcdc
 Need to append 4 characters
 Given Text : 121
 Need to append 0 characters
 Given Text : 1236
 Need to append 3 characters
package main
import "fmt"
/*
  Go program for
  Minimum number of append character needed to make a string palindrome
*/
// Check that suffix of string is part of palindrome or not
func isSuffixPalindrome(text string, s int, e int) bool {
	var i int = s
	var j int = e
	for (i < j) {
		if text[i] != text[j] {
			// When not a palindrome
			return false
		}
		i++
		j--
	}
	// When yes
	return true
}
func makePalindromeByAppend(text string) {
	if len(text) == 0 {
		return
	}
	var count int = -1
	// Get the length of text
	var n int = len(text)
	// Executing this loop through by size of text length
	for i := 0 ; i < n && count == -1 ; i++ {
		if text[i] == text[n - 1] && isSuffixPalindrome(text, i, n - 1) {
			// When suffix i..n is palindrome
			count = i
		}
	}
	// Display given text
	fmt.Println(" Given Text : ", text)
	fmt.Println(" Need to append ", count, " characters")
}
func main() {
	
	// Test Inputs
	// Case A
	// Text : 123443
	//  12  3443 21  [Add 21 at end] 
	// 12344321 => palindrome
	// Result : 2
	makePalindromeByAppend("123443")
	// Case B
	// Text : faafcdc
	// faaf cdc faaf [Add faaf at end]
	// faafcdcfaaf => palindrome
	// Result : 4
	makePalindromeByAppend("faafcdc")
	// Case C
	// Text : 121
	// 121 it's already palindrome
	// Result : 0
	makePalindromeByAppend("121")
	// Case D
	// Text : 1236
	// 123 6 321 
	// Result : 3
	makePalindromeByAppend("1236")
}

Output

 Given Text : 123443
 Need to append 2 characters
 Given Text : faafcdc
 Need to append 4 characters
 Given Text : 121
 Need to append 0 characters
 Given Text : 1236
 Need to append 3 characters
<?php
/*
  Php program for
  Minimum number of append character needed to make a string palindrome
*/
class Palindrome
{
	// Check that suffix of string is part of palindrome or not
	public	function isSuffixPalindrome($text, $s, $e)
	{
		$i = $s;
		$j = $e;
		while ($i < $j)
		{
			if ($text[$i] != $text[$j])
			{
				// When not a palindrome
				return false;
			}
			$i++;
			$j--;
		}
		// When yes
		return true;
	}
	public	function makePalindromeByAppend($text)
	{
		if (strlen($text) == 0)
		{
			return;
		}
		$count = -1;
		// Get the length of text
		$n = strlen($text);
		// Executing this loop through by size of text length
		for ($i = 0; $i < $n && $count == -1; ++$i)
		{
			if ($text[$i] == $text[$n - 1] && 
                $this->isSuffixPalindrome($text, $i, $n - 1))
			{
				// When suffix i..n is palindrome
				$count = $i;
			}
		}
		// Display given text
		echo(" Given Text : ".$text."\n");
		echo(" Need to append ".$count." characters\n");
	}
}

function main()
{
	$task = new Palindrome();
	// Test Inputs
	// Case A
	// Text : 123443
	//  12  3443 21  [Add 21 at end] 
	// 12344321 => palindrome
	// Result : 2
	$task->makePalindromeByAppend("123443");
	// Case B
	// Text : faafcdc
	// faaf cdc faaf [Add faaf at end]
	// faafcdcfaaf => palindrome
	// Result : 4
	$task->makePalindromeByAppend("faafcdc");
	// Case C
	// Text : 121
	// 121 it's already palindrome
	// Result : 0
	$task->makePalindromeByAppend("121");
	// Case D
	// Text : 1236
	// 123 6 321 
	// Result : 3
	$task->makePalindromeByAppend("1236");
}
main();

Output

 Given Text : 123443
 Need to append 2 characters
 Given Text : faafcdc
 Need to append 4 characters
 Given Text : 121
 Need to append 0 characters
 Given Text : 1236
 Need to append 3 characters
/*
  Node JS program for
  Minimum number of append character needed to make a string palindrome
*/
class Palindrome
{
	// Check that suffix of string is part of palindrome or not
	isSuffixPalindrome(text, s, e)
	{
		var i = s;
		var j = e;
		while (i < j)
		{
			if (text.charAt(i) != text.charAt(j))
			{
				// When not a palindrome
				return false;
			}
			i++;
			j--;
		}
		// When yes
		return true;
	}
	makePalindromeByAppend(text)
	{
		if (text.length == 0)
		{
			return;
		}
		var count = -1;
		// Get the length of text
		var n = text.length;
		// Executing this loop through by size of text length
		for (var i = 0; i < n && count == -1; ++i)
		{
			if (text.charAt(i) == text.charAt(n - 1) && 
                this.isSuffixPalindrome(text, i, n - 1))
			{
				// When suffix i..n is palindrome
				count = i;
			}
		}
		// Display given text
		console.log(" Given Text : " + text);
		console.log(" Need to append " + count + " characters");
	}
}

function main()
{
	var task = new Palindrome();
	// Test Inputs
	// Case A
	// Text : 123443
	//  12  3443 21  [Add 21 at end] 
	// 12344321 => palindrome
	// Result : 2
	task.makePalindromeByAppend("123443");
	// Case B
	// Text : faafcdc
	// faaf cdc faaf [Add faaf at end]
	// faafcdcfaaf => palindrome
	// Result : 4
	task.makePalindromeByAppend("faafcdc");
	// Case C
	// Text : 121
	// 121 it's already palindrome
	// Result : 0
	task.makePalindromeByAppend("121");
	// Case D
	// Text : 1236
	// 123 6 321 
	// Result : 3
	task.makePalindromeByAppend("1236");
}
main();

Output

 Given Text : 123443
 Need to append 2 characters
 Given Text : faafcdc
 Need to append 4 characters
 Given Text : 121
 Need to append 0 characters
 Given Text : 1236
 Need to append 3 characters
#  Python 3 program for
#  Minimum number of append character needed to make a string palindrome
class Palindrome :
	#  Check that suffix of string is part of palindrome or not
	def isSuffixPalindrome(self, text, s, e) :
		i = s
		j = e
		while (i < j) :
			if (text[i] != text[j]) :
				#  When not a palindrome
				return False
			
			i += 1
			j -= 1
		
		#  When yes
		return True
	
	def makePalindromeByAppend(self, text) :
		if (len(text) == 0) :
			return
		
		count = -1
		#  Get the length of text
		n = len(text)
		i = 0
		#  Executing this loop through by size of text length
		while (i < n and count == -1) :
			if (text[i] == text[n - 1] and 
                self.isSuffixPalindrome(text, i, n - 1)) :
				#  When suffix i..n is palindrome
				count = i
			
			i += 1
		
		#  Display given text
		print(" Given Text : ", text)
		print(" Need to append ", count ," characters")
	

def main() :
	task = Palindrome()
	#  Test Inputs
	#  Case A
	#  Text : 123443
	#   12  3443 21  [Add 21 at end] 
	#  12344321 => palindrome
	#  Result : 2
	task.makePalindromeByAppend("123443")
	#  Case B
	#  Text : faafcdc
	#  faaf cdc faaf [Add faaf at end]
	#  faafcdcfaaf => palindrome
	#  Result : 4
	task.makePalindromeByAppend("faafcdc")
	#  Case C
	#  Text : 121
	#  121 it's already palindrome
	#  Result : 0
	task.makePalindromeByAppend("121")
	#  Case D
	#  Text : 1236
	#  123 6 321 
	#  Result : 3
	task.makePalindromeByAppend("1236")

if __name__ == "__main__": main()

Output

 Given Text :  123443
 Need to append  2  characters
 Given Text :  faafcdc
 Need to append  4  characters
 Given Text :  121
 Need to append  0  characters
 Given Text :  1236
 Need to append  3  characters
#  Ruby program for
#  Minimum number of append character needed to make a string palindrome
class Palindrome 
	#  Check that suffix of string is part of palindrome or not
	def isSuffixPalindrome(text, s, e) 
		i = s
		j = e
		while (i < j) 
			if (text[i] != text[j]) 
				#  When not a palindrome
				return false
			end

			i += 1
			j -= 1
		end

		#  When yes
		return true
	end

	def makePalindromeByAppend(text) 
		if (text.length == 0) 
			return
		end

		count = -1
		#  Get the length of text
		n = text.length
		i = 0
		#  Executing this loop through by size of text length
		while (i < n && count == -1) 
			if (text[i] == text[n - 1] && 
                self.isSuffixPalindrome(text, i, n - 1)) 
				#  When suffix i..n is palindrome
				count = i
			end

			i += 1
		end

		#  Display given text
		print(" Given Text : ", text, "\n")
		print(" Need to append ", count ," characters", "\n")
	end

end

def main() 
	task = Palindrome.new()
	#  Test Inputs
	#  Case A
	#  Text : 123443
	#   12  3443 21  [Add 21 at end] 
	#  12344321 => palindrome
	#  Result : 2
	task.makePalindromeByAppend("123443")
	#  Case B
	#  Text : faafcdc
	#  faaf cdc faaf [Add faaf at end]
	#  faafcdcfaaf => palindrome
	#  Result : 4
	task.makePalindromeByAppend("faafcdc")
	#  Case C
	#  Text : 121
	#  121 it's already palindrome
	#  Result : 0
	task.makePalindromeByAppend("121")
	#  Case D
	#  Text : 1236
	#  123 6 321 
	#  Result : 3
	task.makePalindromeByAppend("1236")
end

main()

Output

 Given Text : 123443
 Need to append 2 characters
 Given Text : faafcdc
 Need to append 4 characters
 Given Text : 121
 Need to append 0 characters
 Given Text : 1236
 Need to append 3 characters
import scala.collection.mutable._;
/*
  Scala program for
  Minimum number of append character needed to make a string palindrome
*/
class Palindrome()
{
	// Check that suffix of string is part of palindrome or not
	def isSuffixPalindrome(text: String, s: Int, e: Int): Boolean = {
		var i: Int = s;
		var j: Int = e;
		while (i < j)
		{
			if (text.charAt(i) != text.charAt(j))
			{
				// When not a palindrome
				return false;
			}
			i += 1;
			j -= 1;
		}
		// When yes
		return true;
	}
	def makePalindromeByAppend(text: String): Unit = {
		if (text.length() == 0)
		{
			return;
		}
		var count: Int = -1;
		// Get the length of text
		var n: Int = text.length();
		var i: Int = 0;
		// Executing this loop through by size of text length
		while (i < n && count == -1)
		{
			if (text.charAt(i) == text.charAt(n - 1) && 
                isSuffixPalindrome(text, i, n - 1))
			{
				// When suffix i..n is palindrome
				count = i;
			}
			i += 1;
		}
		// Display given text
		println(" Given Text : " + text);
		println(" Need to append " + count + " characters");
	}
}
object Main
{
	def main(args: Array[String]): Unit = {
		var task: Palindrome = new Palindrome();
		// Test Inputs
		// Case A
		// Text : 123443
		//  12  3443 21  [Add 21 at end] 
		// 12344321 => palindrome
		// Result : 2
		task.makePalindromeByAppend("123443");
		// Case B
		// Text : faafcdc
		// faaf cdc faaf [Add faaf at end]
		// faafcdcfaaf => palindrome
		// Result : 4
		task.makePalindromeByAppend("faafcdc");
		// Case C
		// Text : 121
		// 121 it's already palindrome
		// Result : 0
		task.makePalindromeByAppend("121");
		// Case D
		// Text : 1236
		// 123 6 321 
		// Result : 3
		task.makePalindromeByAppend("1236");
	}
}

Output

 Given Text : 123443
 Need to append 2 characters
 Given Text : faafcdc
 Need to append 4 characters
 Given Text : 121
 Need to append 0 characters
 Given Text : 1236
 Need to append 3 characters
import Foundation;
/*
  Swift 4 program for
  Minimum number of append character needed to make a string palindrome
*/
class Palindrome
{
	// Check that suffix of string is part of palindrome or not
	func isSuffixPalindrome(_ text: [Character], _ s: Int, _ e: Int) -> Bool
	{
		var i: Int = s;
		var j: Int = e;
		while (i < j)
		{
			if (text[i]  != text[j])
			{
				// When not a palindrome
				return false;
			}
			i += 1;
			j -= 1;
		}
		// When yes
		return true;
	}
	func makePalindromeByAppend(_ data: String)
	{
		if (data.count == 0)
		{
			return;
		}
		var count: Int = -1;
		// Get the length of text
		let n: Int = data.count;
		var i: Int = 0;
      	let text = Array(data);
		// Executing this loop through by size of text length
		while (i < n && count == -1)
		{
			if (text[i] == text[n - 1] && 
                self.isSuffixPalindrome(text, i, n - 1))
			{
				// When suffix i..n is palindrome
				count = i;
			}
			i += 1;
		}
		// Display given text
		print(" Given Text : ", data);
		print(" Need to append ", count ," characters");
	}
}
func main()
{
	let task: Palindrome = Palindrome();
	// Test Inputs
	// Case A
	// Text : 123443
	//  12  3443 21  [Add 21 at end] 
	// 12344321 => palindrome
	// Result : 2
	task.makePalindromeByAppend("123443");
	// Case B
	// Text : faafcdc
	// faaf cdc faaf [Add faaf at end]
	// faafcdcfaaf => palindrome
	// Result : 4
	task.makePalindromeByAppend("faafcdc");
	// Case C
	// Text : 121
	// 121 it's already palindrome
	// Result : 0
	task.makePalindromeByAppend("121");
	// Case D
	// Text : 1236
	// 123 6 321 
	// Result : 3
	task.makePalindromeByAppend("1236");
}
main();

Output

 Given Text :  123443
 Need to append  2  characters
 Given Text :  faafcdc
 Need to append  4  characters
 Given Text :  121
 Need to append  0  characters
 Given Text :  1236
 Need to append  3  characters
/*
  Kotlin program for
  Minimum number of append character needed to make a string palindrome
*/
class Palindrome
{
	// Check that suffix of string is part of palindrome or not
	fun isSuffixPalindrome(text: String, s: Int, e: Int): Boolean
	{
		var i: Int = s;
		var j: Int = e;
		while (i < j)
		{
			if (text.get(i) != text.get(j))
			{
				// When not a palindrome
				return false;
			}
			i += 1;
			j -= 1;
		}
		// When yes
		return true;
	}
	fun makePalindromeByAppend(text: String): Unit
	{
		if (text.length == 0)
		{
			return;
		}
		var count: Int = -1;
		// Get the length of text
		val n: Int = text.length;
		var i: Int = 0;
		// Executing this loop through by size of text length
		while (i < n && count == -1)
		{
			if (text.get(i) == text.get(n - 1) && 
                this.isSuffixPalindrome(text, i, n - 1))
			{
				// When suffix i..n is palindrome
				count = i;
			}
			i += 1;
		}
		// Display given text
		println(" Given Text : " + text);
		println(" Need to append " + count + " characters");
	}
}
fun main(args: Array < String > ): Unit
{
	val task: Palindrome = Palindrome();
	// Test Inputs
	// Case A
	// Text : 123443
	//  12  3443 21  [Add 21 at end] 
	// 12344321 => palindrome
	// Result : 2
	task.makePalindromeByAppend("123443");
	// Case B
	// Text : faafcdc
	// faaf cdc faaf [Add faaf at end]
	// faafcdcfaaf => palindrome
	// Result : 4
	task.makePalindromeByAppend("faafcdc");
	// Case C
	// Text : 121
	// 121 it's already palindrome
	// Result : 0
	task.makePalindromeByAppend("121");
	// Case D
	// Text : 1236
	// 123 6 321 
	// Result : 3
	task.makePalindromeByAppend("1236");
}

Output

 Given Text : 123443
 Need to append 2 characters
 Given Text : faafcdc
 Need to append 4 characters
 Given Text : 121
 Need to append 0 characters
 Given Text : 1236
 Need to append 3 characters

Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

New Comment