একটি অ্যারে arr[] দেওয়া থাকলে যেকোনো সাইজ n, আমাদের টাস্ক হলো বের করা অ্যারেটি প্যালিনড্রোম কিনা। প্যালিনড্রোম হলো এমন একটি সিকোয়েন্স যা উল্টে এবং সোজা দুভাবেই একই পড়া যায়, যেমন: MADAM, NAMAN, ইত্যাদি।
সুতরাং একটি অ্যারে প্যালিনড্রোম কিনা চেক করতে আমরা অ্যারেটি পিছন থেকে এবং সামনে থেকে ট্রাভার্স করতে পারি −

উদাহরণ
ইনপুট: arr[] = {1, 0, 0, 1} আউটপুট: Array is palindrome
ইনপুট: arr[] = {1, 2, 3, 4, 5} আউটপুট: Array is not palindrome
নিচে ব্যবহৃত পদ্ধতি −
আমরা অ্যারেটি শুরু থেকে এবং শেষ থেকে ট্রাভার্স করব যতক্ষণ না দুটি সমান হয় এবং চেক করব শুরুয়ের এলিমেন্ট শেষের এলিমেন্টের সাথে একই কিনা, তবে অ্যারেটি প্যালিনড্রোম, অন্যথায় অ্যারেটি প্যালিনড্রোম নয়।
অ্যালগরিদম
Start
function int pallindrome(int arr[], int n) এ
ধাপ ১ → i, j, flag ইনিশিয়ালাইজ এবং flag = 0 অ্যাসাইন
ধাপ ২ → লুপ: i = 0, j=n-1; i < n/2, j >= n/2; i++, j--
If arr[i] != arr[j] then,
flag = 1 সেট
Break
End If
End Loop
ধাপ ৩ → If flag == 1 then,
Return 0
ধাপ ৪ → Else
Return 1
End function
function int main(int argc, char const *argv[]) এ
ধাপ ১ → arr[] = {1, 0, 2, 3, 2, 2, 1} ডিক্লেয়ার ও ইনিশিয়ালাইজ
ধাপ ২ → n = sizeof(arr)/sizeof(arr[0]) ডিক্লেয়ার ও ইনিশিয়ালাইজ
ধাপ ৩ → If pallindrome(arr, n) then,
Print "Array is pallindrome "
End if
ধাপ ৪ → Else
Print "Array is not pallindrome "
Return 0
End main
Stop
উদাহরণ
#include <stdio.h>
int pallindrome(int arr[], int n) {
int i, j, flag = 0;
for(i = 0, j=n-1; i < n/2, j >= n/2; i++, j--) {
if(arr[i] != arr[j]) {
flag = 1;
break;
}
}
if (flag == 1)
return 0;
else
return 1;
}
int main(int argc, char const *argv[]) {
int arr[] = {1, 0, 2, 3, 2, 2, 1};
int n = sizeof(arr)/sizeof(arr[0]);
if(pallindrome(arr, n)) {
printf("Array is pallindrome\n");
}
else
printf("Array is not pallindrome\n");
return 0;
}
আউটপুট
উপরের কোড রান করলে নিচের আউটপুট জেনারেট হবে −
Array is not palindrome