Skip to main content

Check if a given string is a cyclic palindrome

Here given code implementation process.

/*
    C program for
    Check if a given string is a cyclic palindrome
*/
#include <stdio.h>
#include <string.h>

// This function is checking rotation palindrome of given indexes
int isPalindrome(char *text, int start, int n)
{
	// Left side 
	int left = start - 1;
	// Right side
	int right = start;
	int count = 0;
	while (count < n)
	{
		if (left < 0)
		{
			// When left is less than zero
			// Set last position
			left = n - 1;
		}
		if (right >= n)
		{
			// When right is greater than or equal to n
			// Set first position
			right = 0;
		}
		if (text[left] != text[right])
		{
			// When palindrome not occur
			return 0;
		}
		// Change counter value
		left--;
		right++;
		count++;
	}
	return 1;
}
void isCyclicPalindrome(char *text)
{
	// Get the number of text element
	int n = strlen(text);
	printf("\n Given Text : %s", text);
	for (int i = 0; i < n; ++i)
	{
		if (isPalindrome(text, i, n))
		{
			// When cyclic palindrome exist
			printf("\n Is cyclic palindrome\n");
			return;
		}
	}
	// When if rotational or cyclic palindrome not exist
	printf("\n Is not cyclic palindrome\n");
}
int main(int argc, char
	const *argv[])
{
	// xxxxyy =>  yxxxxy
	isCyclicPalindrome("xxxxyy");
	// abccba => abccba or cbaabc ...
	isCyclicPalindrome("abccba");
	isCyclicPalindrome("abccic");
	// abaaaaa => aaabaaa 
	isCyclicPalindrome("abaaaaa");
	return 0;
}

Output

 Given Text : xxxxyy
 Is cyclic palindrome

 Given Text : abccba
 Is cyclic palindrome

 Given Text : abccic
 Is not cyclic palindrome

 Given Text : abaaaaa
 Is cyclic palindrome
/*
    Java program for
    Check if a given string is a cyclic palindrome
*/
public class Palindrome
{
	// This function is checking rotation palindrome of given indexes
	public boolean isPalindrome(String text, int start, int n)
	{
		// Left side 
		int left = start - 1;
		// Right side
		int right = start;
		int count = 0;
		while (count < n)
		{
			if (left < 0)
			{
				// When left is less than zero
				// Set last position
				left = n - 1;
			}
			if (right >= n)
			{
				// When right is greater than or equal to n
				// Set first position
				right = 0;
			}
			if (text.charAt(left) != text.charAt(right))
			{
				// When palindrome not occur
				return false;
			}
			// Change counter value
			left--;
			right++;
			count++;
		}
		return true;
	}
	public void isCyclicPalindrome(String text)
	{
		// Get the number of text element
		int n = text.length();
		System.out.print("\n Given Text : " + text);
		for (int i = 0; i < n; ++i)
		{
			if (isPalindrome(text, i, n))
			{
				// When cyclic palindrome exist
				System.out.print("\n Is cyclic palindrome\n");
				return;
			}
		}
		// When if rotational or cyclic palindrome not exist
		System.out.print("\n Is not cyclic palindrome\n");
	}
	public static void main(String[] args)
	{
		Palindrome task = new Palindrome();
		// xxxxyy =>  yxxxxy
		task.isCyclicPalindrome("xxxxyy");
		// abccba => abccba or cbaabc ...
		task.isCyclicPalindrome("abccba");
		task.isCyclicPalindrome("abccic");
		// abaaaaa => aaabaaa 
		task.isCyclicPalindrome("abaaaaa");
	}
}

Output

 Given Text : xxxxyy
 Is cyclic palindrome

 Given Text : abccba
 Is cyclic palindrome

 Given Text : abccic
 Is not cyclic palindrome

 Given Text : abaaaaa
 Is cyclic palindrome
// Include header file
#include <iostream>
#include <string>
using namespace std;
/*
    C++ program for
    Check if a given string is a cyclic palindrome
*/
class Palindrome
{
	public:
		// This function is checking rotation palindrome of given indexes
		bool isPalindrome(string text, int start, int n)
		{
			// Left side 
			int left = start - 1;
			// Right side
			int right = start;
			int count = 0;
			while (count < n)
			{
				if (left < 0)
				{
					// When left is less than zero
					// Set last position
					left = n - 1;
				}
				if (right >= n)
				{
					// When right is greater than or equal to n
					// Set first position
					right = 0;
				}
				if (text[left] != text[right])
				{
					// When palindrome not occur
					return false;
				}
				// Change counter value
				left--;
				right++;
				count++;
			}
			return true;
		}
	void isCyclicPalindrome(string text)
	{
		// Get the number of text element
		int n = text.length();
		cout << "\n Given Text : " << text;
		for (int i = 0; i < n; ++i)
		{
			if (this->isPalindrome(text, i, n))
			{
				// When cyclic palindrome exist
				cout << "\n Is cyclic palindrome\n";
				return;
			}
		}
		// When if rotational or cyclic palindrome not exist
		cout << "\n Is not cyclic palindrome\n";
	}
};
int main()
{
	Palindrome *task = new Palindrome();
	// xxxxyy =>  yxxxxy
	task->isCyclicPalindrome("xxxxyy");
	// abccba => abccba or cbaabc ...
	task->isCyclicPalindrome("abccba");
	task->isCyclicPalindrome("abccic");
	// abaaaaa => aaabaaa 
	task->isCyclicPalindrome("abaaaaa");
	return 0;
}

Output

 Given Text : xxxxyy
 Is cyclic palindrome

 Given Text : abccba
 Is cyclic palindrome

 Given Text : abccic
 Is not cyclic palindrome

 Given Text : abaaaaa
 Is cyclic palindrome
// Include namespace system
using System;
/*
    Csharp program for
    Check if a given string is a cyclic palindrome
*/
public class Palindrome
{
	// This function is checking rotation palindrome of given indexes
	public Boolean isPalindrome(String text, int start, int n)
	{
		// Left side 
		int left = start - 1;
		// Right side
		int right = start;
		int count = 0;
		while (count < n)
		{
			if (left < 0)
			{
				// When left is less than zero
				// Set last position
				left = n - 1;
			}
			if (right >= n)
			{
				// When right is greater than or equal to n
				// Set first position
				right = 0;
			}
			if (text[left] != text[right])
			{
				// When palindrome not occur
				return false;
			}
			// Change counter value
			left--;
			right++;
			count++;
		}
		return true;
	}
	public void isCyclicPalindrome(String text)
	{
		// Get the number of text element
		int n = text.Length;
		Console.Write("\n Given Text : " + text);
		for (int i = 0; i < n; ++i)
		{
			if (this.isPalindrome(text, i, n))
			{
				// When cyclic palindrome exist
				Console.Write("\n Is cyclic palindrome\n");
				return;
			}
		}
		// When if rotational or cyclic palindrome not exist
		Console.Write("\n Is not cyclic palindrome\n");
	}
	public static void Main(String[] args)
	{
		Palindrome task = new Palindrome();
		// xxxxyy =>  yxxxxy
		task.isCyclicPalindrome("xxxxyy");
		// abccba => abccba or cbaabc ...
		task.isCyclicPalindrome("abccba");
		task.isCyclicPalindrome("abccic");
		// abaaaaa => aaabaaa 
		task.isCyclicPalindrome("abaaaaa");
	}
}

Output

 Given Text : xxxxyy
 Is cyclic palindrome

 Given Text : abccba
 Is cyclic palindrome

 Given Text : abccic
 Is not cyclic palindrome

 Given Text : abaaaaa
 Is cyclic palindrome
<?php
/*
    Php program for
    Check if a given string is a cyclic palindrome
*/
class Palindrome
{
	// This function is checking rotation palindrome of given indexes
	public	function isPalindrome($text, $start, $n)
	{
		// Left side 
		$left = $start - 1;
		// Right side
		$right = $start;
		$count = 0;
		while ($count < $n)
		{
			if ($left < 0)
			{
				// When left is less than zero
				// Set last position
				$left = $n - 1;
			}
			if ($right >= $n)
			{
				// When right is greater than or equal to n
				// Set first position
				$right = 0;
			}
			if ($text[$left] != $text[$right])
			{
				// When palindrome not occur
				return false;
			}
			// Change counter value
			$left--;
			$right++;
			$count++;
		}
		return true;
	}
	public	function isCyclicPalindrome($text)
	{
		// Get the number of text element
		$n = strlen($text);
		echo("\n Given Text : ".$text);
		for ($i = 0; $i < $n; ++$i)
		{
			if ($this->isPalindrome($text, $i, $n))
			{
				// When cyclic palindrome exist
				echo("\n Is cyclic palindrome\n");
				return;
			}
		}
		// When if rotational or cyclic palindrome not exist
		echo("\n Is not cyclic palindrome\n");
	}
}

function main()
{
	$task = new Palindrome();
	// xxxxyy =>  yxxxxy
	$task->isCyclicPalindrome("xxxxyy");
	// abccba => abccba or cbaabc ...
	$task->isCyclicPalindrome("abccba");
	$task->isCyclicPalindrome("abccic");
	// abaaaaa => aaabaaa 
	$task->isCyclicPalindrome("abaaaaa");
}
main();

Output

 Given Text : xxxxyy
 Is cyclic palindrome

 Given Text : abccba
 Is cyclic palindrome

 Given Text : abccic
 Is not cyclic palindrome

 Given Text : abaaaaa
 Is cyclic palindrome
/*
    Node JS program for
    Check if a given string is a cyclic palindrome
*/
class Palindrome
{
	// This function is checking rotation palindrome of given indexes
	isPalindrome(text, start, n)
	{
		// Left side 
		var left = start - 1;
		// Right side
		var right = start;
		var count = 0;
		while (count < n)
		{
			if (left < 0)
			{
				// When left is less than zero
				// Set last position
				left = n - 1;
			}
			if (right >= n)
			{
				// When right is greater than or equal to n
				// Set first position
				right = 0;
			}
			if (text.charAt(left) != text.charAt(right))
			{
				// When palindrome not occur
				return false;
			}
			// Change counter value
			left--;
			right++;
			count++;
		}
		return true;
	}
	isCyclicPalindrome(text)
	{
		// Get the number of text element
		var n = text.length;
		process.stdout.write("\n Given Text : " + text);
		for (var i = 0; i < n; ++i)
		{
			if (this.isPalindrome(text, i, n))
			{
				// When cyclic palindrome exist
				process.stdout.write("\n Is cyclic palindrome\n");
				return;
			}
		}
		// When if rotational or cyclic palindrome not exist
		process.stdout.write("\n Is not cyclic palindrome\n");
	}
}

function main()
{
	var task = new Palindrome();
	// xxxxyy =>  yxxxxy
	task.isCyclicPalindrome("xxxxyy");
	// abccba => abccba or cbaabc ...
	task.isCyclicPalindrome("abccba");
	task.isCyclicPalindrome("abccic");
	// abaaaaa => aaabaaa 
	task.isCyclicPalindrome("abaaaaa");
}
main();

Output

 Given Text : xxxxyy
 Is cyclic palindrome

 Given Text : abccba
 Is cyclic palindrome

 Given Text : abccic
 Is not cyclic palindrome

 Given Text : abaaaaa
 Is cyclic palindrome
#    Python 3 program for
#    Check if a given string is a cyclic palindrome
class Palindrome :
	#  This function is checking rotation palindrome of given indexes
	def isPalindrome(self, text, start, n) :
		#  Left side 
		left = start - 1
		#  Right side
		right = start
		count = 0
		while (count < n) :
			if (left < 0) :
				#  When left is less than zero
				#  Set last position
				left = n - 1
			
			if (right >= n) :
				#  When right is greater than or equal to n
				#  Set first position
				right = 0
			
			if (text[left] != text[right]) :
				#  When palindrome not occur
				return False
			
			#  Change counter value
			left -= 1
			right += 1
			count += 1
		
		return True
	
	def isCyclicPalindrome(self, text) :
		#  Get the number of text element
		n = len(text)
		print("\n Given Text : ", text, end = "")
		i = 0
		while (i < n) :
			if (self.isPalindrome(text, i, n)) :
				#  When cyclic palindrome exist
				print("\n Is cyclic palindrome")
				return
			
			i += 1
		
		#  When if rotational or cyclic palindrome not exist
		print("\n Is not cyclic palindrome")
	

def main() :
	task = Palindrome()
	#  xxxxyy =>  yxxxxy
	task.isCyclicPalindrome("xxxxyy")
	#  abccba => abccba or cbaabc ...
	task.isCyclicPalindrome("abccba")
	task.isCyclicPalindrome("abccic")
	#  abaaaaa => aaabaaa 
	task.isCyclicPalindrome("abaaaaa")

if __name__ == "__main__": main()

Output

 Given Text :  xxxxyy
 Is cyclic palindrome

 Given Text :  abccba
 Is cyclic palindrome

 Given Text :  abccic
 Is not cyclic palindrome

 Given Text :  abaaaaa
 Is cyclic palindrome
#    Ruby program for
#    Check if a given string is a cyclic palindrome
class Palindrome 
	#  This function is checking rotation palindrome of given indexes
	def isPalindrome(text, start, n) 
		#  Left side 
		left = start - 1
		#  Right side
		right = start
		count = 0
		while (count < n) 
			if (left < 0) 
				#  When left is less than zero
				#  Set last position
				left = n - 1
			end

			if (right >= n) 
				#  When right is greater than or equal to n
				#  Set first position
				right = 0
			end

			if (text[left] != text[right]) 
				#  When palindrome not occur
				return false
			end

			#  Change counter value
			left -= 1
			right += 1
			count += 1
		end

		return true
	end

	def isCyclicPalindrome(text) 
		#  Get the number of text element
		n = text.length
		print("\n Given Text : ", text)
		i = 0
		while (i < n) 
			if (self.isPalindrome(text, i, n)) 
				#  When cyclic palindrome exist
				print("\n Is cyclic palindrome\n")
				return
			end

			i += 1
		end

		#  When if rotational or cyclic palindrome not exist
		print("\n Is not cyclic palindrome\n")
	end

end

def main() 
	task = Palindrome.new()
	#  xxxxyy =>  yxxxxy
	task.isCyclicPalindrome("xxxxyy")
	#  abccba => abccba or cbaabc ...
	task.isCyclicPalindrome("abccba")
	task.isCyclicPalindrome("abccic")
	#  abaaaaa => aaabaaa 
	task.isCyclicPalindrome("abaaaaa")
end

main()

Output

 Given Text : xxxxyy
 Is cyclic palindrome

 Given Text : abccba
 Is cyclic palindrome

 Given Text : abccic
 Is not cyclic palindrome

 Given Text : abaaaaa
 Is cyclic palindrome
/*
    Scala program for
    Check if a given string is a cyclic palindrome
*/
class Palindrome()
{
	// This function is checking rotation palindrome of given indexes
	def isPalindrome(text: String, start: Int, n: Int): Boolean = {
		// Left side 
		var left: Int = start - 1;
		// Right side
		var right: Int = start;
		var count: Int = 0;
		while (count < n)
		{
			if (left < 0)
			{
				// When left is less than zero
				// Set last position
				left = n - 1;
			}
			if (right >= n)
			{
				// When right is greater than or equal to n
				// Set first position
				right = 0;
			}
			if (text.charAt(left) != text.charAt(right))
			{
				// When palindrome not occur
				return false;
			}
			// Change counter value
			left -= 1;
			right += 1;
			count += 1;
		}
		return true;
	}
	def isCyclicPalindrome(text: String): Unit = {
		// Get the number of text element
		var n: Int = text.length();
		print("\n Given Text : " + text);
		var i: Int = 0;
		while (i < n)
		{
			if (isPalindrome(text, i, n))
			{
				// When cyclic palindrome exist
				print("\n Is cyclic palindrome\n");
				return;
			}
			i += 1;
		}
		// When if rotational or cyclic palindrome not exist
		print("\n Is not cyclic palindrome\n");
	}
}
object Main
{
	def main(args: Array[String]): Unit = {
		var task: Palindrome = new Palindrome();
		// xxxxyy =>  yxxxxy
		task.isCyclicPalindrome("xxxxyy");
		// abccba => abccba or cbaabc ...
		task.isCyclicPalindrome("abccba");
		task.isCyclicPalindrome("abccic");
		// abaaaaa => aaabaaa 
		task.isCyclicPalindrome("abaaaaa");
	}
}

Output

 Given Text : xxxxyy
 Is cyclic palindrome

 Given Text : abccba
 Is cyclic palindrome

 Given Text : abccic
 Is not cyclic palindrome

 Given Text : abaaaaa
 Is cyclic palindrome
import Foundation;
/*
    Swift 4 program for
    Check if a given string is a cyclic palindrome
*/
class Palindrome
{
	// This function is checking rotation palindrome of given indexes
	func isPalindrome(_ arr: [Character], _ start: Int, _ n: Int) -> Bool
	{
		// Left side 
		var left: Int = start - 1;
		// Right side
		var right: Int = start;
		var count: Int = 0;
		while (count < n)
		{
			if (left < 0)
			{
				// When left is less than zero
				// Set last position
				left = n - 1;
			}
			if (right >= n)
			{
				// When right is greater than or equal to n
				// Set first position
				right = 0;
			}
			if (arr[left]  != arr[right])
			{
				// When palindrome not occur
				return false;
			}
			// Change counter value
			left -= 1;
			right += 1;
			count += 1;
		}
		return true;
	}
	func isCyclicPalindrome(_ text: String)
	{
		// Get the number of text element
		let n: Int = text.count;
		print("\n Given Text : ", text, terminator: "");
		var i: Int = 0;
		let arr = Array(text);
		while (i < n)
		{
			if (self.isPalindrome(arr, i, n))
			{
				// When cyclic palindrome exist
				print("\n Is cyclic palindrome");
				return;
			}
			i += 1;
		}
		// When if rotational or cyclic palindrome not exist
		print("\n Is not cyclic palindrome");
	}
}
func main()
{
	let task: Palindrome = Palindrome();
	// xxxxyy =>  yxxxxy
	task.isCyclicPalindrome("xxxxyy");
	// abccba => abccba or cbaabc ...
	task.isCyclicPalindrome("abccba");
	task.isCyclicPalindrome("abccic");
	// abaaaaa => aaabaaa 
	task.isCyclicPalindrome("abaaaaa");
}
main();

Output

 Given Text :  xxxxyy
 Is cyclic palindrome

 Given Text :  abccba
 Is cyclic palindrome

 Given Text :  abccic
 Is not cyclic palindrome

 Given Text :  abaaaaa
 Is cyclic palindrome
/*
    Kotlin program for
    Check if a given string is a cyclic palindrome
*/
class Palindrome
{
	// This function is checking rotation palindrome of given indexes
	fun isPalindrome(text: String, start: Int, n: Int): Boolean
	{
		// Left side 
		var left: Int = start - 1;
		// Right side
		var right: Int = start;
		var count: Int = 0;
		while (count < n)
		{
			if (left < 0)
			{
				// When left is less than zero
				// Set last position
				left = n - 1;
			}
			if (right >= n)
			{
				// When right is greater than or equal to n
				// Set first position
				right = 0;
			}
			if (text.get(left) != text.get(right))
			{
				// When palindrome not occur
				return false;
			}
			// Change counter value
			left -= 1;
			right += 1;
			count += 1;
		}
		return true;
	}
	fun isCyclicPalindrome(text: String): Unit
	{
		// Get the number of text element
		val n: Int = text.length;
		print("\n Given Text : " + text);
		var i: Int = 0;
		while (i < n)
		{
			if (this.isPalindrome(text, i, n))
			{
				// When cyclic palindrome exist
				print("\n Is cyclic palindrome\n");
				return;
			}
			i += 1;
		}
		// When if rotational or cyclic palindrome not exist
		print("\n Is not cyclic palindrome\n");
	}
}
fun main(args: Array < String > ): Unit
{
	val task: Palindrome = Palindrome();
	// xxxxyy =>  yxxxxy
	task.isCyclicPalindrome("xxxxyy");
	// abccba => abccba or cbaabc ...
	task.isCyclicPalindrome("abccba");
	task.isCyclicPalindrome("abccic");
	// abaaaaa => aaabaaa 
	task.isCyclicPalindrome("abaaaaa");
}

Output

 Given Text : xxxxyy
 Is cyclic palindrome

 Given Text : abccba
 Is cyclic palindrome

 Given Text : abccic
 Is not cyclic palindrome

 Given Text : abaaaaa
 Is cyclic palindrome
package main
import "fmt"
/*
    Go program for
    Check if a given string is a cyclic palindrome
*/

// This function is checking rotation palindrome of given indexes
func isPalindrome(text string, start int, n int) bool {
	// Left side 
	var left int = start - 1
	// Right side
	var right int = start
	var count int = 0
	for (count < n) {
		if left < 0 {
			// When left is less than zero
			// Set last position
			left = n - 1
		}
		if right >= n {
			// When right is greater than or equal to n
			// Set first position
			right = 0
		}
		if text[left] != text[right] {
			// When palindrome not occur
			return false
		}
		// Change counter value
		left--
		right++
		count++
	}
	return true
}
func isCyclicPalindrome(text string) {
	// Get the number of text element
	var n int = len(text)
	fmt.Print("\n Given Text : ", text)
	for i := 0 ; i < n ; i++ {
		if isPalindrome(text, i, n) {
			// When cyclic palindrome exist
			fmt.Print("\n Is cyclic palindrome\n")
			return
		}
	}
	// When if rotational or cyclic palindrome not exist
	fmt.Print("\n Is not cyclic palindrome\n")
}
func main() {

	// xxxxyy =>  yxxxxy
	isCyclicPalindrome("xxxxyy")
	// abccba => abccba or cbaabc ...
	isCyclicPalindrome("abccba")
	isCyclicPalindrome("abccic")
	// abaaaaa => aaabaaa 
	isCyclicPalindrome("abaaaaa")
}

Output

 Given Text : xxxxyy
 Is cyclic palindrome

 Given Text : abccba
 Is cyclic palindrome

 Given Text : abccic
 Is not cyclic palindrome

 Given Text : abaaaaa
 Is cyclic palindrome




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