ได้รับอาร์เรย์ arr[] ขนาด n ตรวจสอบว่าเป็น Palindrome หรือไม่
Palindrome = อ่านจากหน้าหลังได้เหมือนกัน (เช่น MADAM, NAMAN)
ตัวอย่าง
Input: arr[] = {1, 0, 0, 1} Output: Array is palindrome
Input: arr[] = {1, 2, 3, 4, 5} Output: Array is not palindrome
แนวทาง (Iterative)
- ใช้สอง pointer: i เริ่ม 0, j เริ่ม n-1
- วนลูป i < n/2, j >= n/2
- ถ้า arr[i] != arr[j] → flag = 1, break
- i++, j--
- ถ้า flag=1 → ไม่ใช่ palindrome
อัลกอริทึม
Start
ฟังก์ชัน pallindrome(arr[], n):
i=0, j=n-1, flag=0
for i=0, j=n-1; i=n/2; i++, j--:
if arr[i] != arr[j]: flag=1; break
if flag==1 return 0 else return 1
main():
arr[] = {1,0,2,3,2,2,1}
n = sizeof(arr)/sizeof(arr[0])
if pallindrome(arr,n) print "Array is palindrome"
else print "Array is not palindrome"
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 arr[] = {1, 0, 2, 3, 2, 2, 1};
int n = sizeof(arr) / sizeof(arr[0]);
if (pallindrome(arr, n))
printf("Array is palindrome\n");
else
printf("Array is not palindrome\n");
return 0;
}
ผลลัพธ์
Array is not palindrome