确定数组是否为回文数组的 C 程序
给定大小为 n 的数组 arr[],我们的任务是确定该数组是否是回文数组。回文数组是正读反读都相同的一个序列,例如:MADAM、NAMAN 等。
因此,要检查一个数组是否是回文数组,我们可以从头到尾遍历数组,就像 −
示例
Input: arr[] = {1, 0, 0, 1} Output: Array is palindrome Input: arr[] = {1, 2, 3, 4, 5} Output: Array is not palindrome
下面使用的思路如下 −
我们从开头和末尾遍历数组,直到它们都相等,并且检查从开头开始的元素是否与从末尾开始的元素相同,则该数组就是回文数组,否则该数组不是回文数组。
算法
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
示例
#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
"); } else printf("Array is not pallindrome
"); return 0; }
输出
如果运行以上代码,将生成以下输出 −
Array is not palindrome
广告