Cho một mảng arr [] có kích thước n bất kỳ, nhiệm vụ của chúng ta là tìm ra mảng đó có phải là palindrome hay không. Palindrome là một chuỗi có thể được đọc ngược và chuyển tiếp như nhau, như:MADAM, NAMAN, v.v.
Vì vậy, để kiểm tra một mảng có phải là palindrome hay không, chúng ta có thể duyệt qua một mảng từ ngược lại và chuyển tiếp như -
Ví dụ
Input: arr[] = {1, 0, 0, 1} Output: Array is palindrome Input: arr[] = {1, 2, 3, 4, 5} Output: Array is not palindrome
Phương pháp tiếp cận được sử dụng bên dưới như sau -
Chúng tôi sẽ duyệt qua mảng từ đầu cũng như từ cuối cho đến khi cả hai đều bằng nhau và kiểm tra xem phần tử bắt đầu có giống với phần tử ở cuối hay không, sau đó mảng là palindrome nếu không mảng không phải là palindrome.
Thuật toán
Start In function int pallindrome(int arr[], int n) Step 1-> initialize i, j, flag and assign flag as 0 Step 2-> Loop For i = 0, j=n-1 and i< n/2, j>=n/2 and i++, j-- If arr[i]!=arr[j] then, Set flag as 1 Break End If End Loop Step 3-> If flag == 1 then, Return 0 Step 4-> Else Return 1 End function In function int main(int argc, char const *argv[]) Step 1-> Declare and initialize arr[] as {1, 0, 2, 3, 2, 2, 1} Step 2-> Declare and initialize n as sizeof(arr)/sizeof(arr[0]) Step 3-> If pallindrome(arr, n) then, Print "Array is pallindrome " End if Step 4-> Else Print "Array is not pallindrome " Return 0 End main Stop
Ví dụ
#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; }
Đầu ra
Nếu chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -
Array is not palindrome