使用C++ STL检查数组是否为回文


给定一个包含n个整数的数组arr[n],任务是判断该数组是否为回文。我们必须使用C++中的STL来完成此任务。

在C++中,STL(标准模板库)是一个特性,它是一组C++模板类,用于提供数据结构和一些函数,例如堆栈、队列、列表等。要使用这些,必须了解模板类。

回文是从序列的前端或后端读取相同的序列。回文的一些简单例子是——MADAM、RACECAR等。数组将类似于以下示例中的回文:

因此,任务很简单,使用C++中的STL找出数组是否为回文,如果它是回文,则打印“这是一个回文”,如果不是回文,则打印“这不是一个回文”。

输入

arr[] = {1, 2, 3, 5, 3, 2, 1}

输出

its a palindrome

输入

arr[] = {1, 2, 3, 4, 5}

输出

its not a palindrome

下面是解决问题的步骤

  • 默认情况下,开始时将flag设置为0。

  • 循环遍历数组i,从0到大小n/2。

  • 对于每个i,检查arr[i] != arr[n-i-1],然后设置flag = 1并中断。

  • 循环结束后,如果flag为1,则打印“这是一个回文”,否则打印“这不是一个回文”。

算法

Start 1→ declare function to check if an array is palindrome or not
   void check_palindrome(int arr[], int size)
      declare int flag = 0
      Declare int arr_2[size]
      Call memcpy(arr_2, arr, size * sizeof(int))
      Call reverse(arr, arr + size)
      Loop For int i = 0 and i < size and i++
         IF (arr[i] != arr_2[i])
            Set flag = 1
            Break
         End
         IF (flag == 0)
            Print its a palindrome
         End
         Else
            Print its not a palindrome
         End
Step 2→ In main()
   Declare int arr[] = { 2,3,4,3,2 }
   Declare int size = sizeof(arr) / sizeof(arr[0])
   Call check_palindrome(arr, size)

示例

 在线演示

#include <bits/stdc++.h>
using namespace std;
void check_palindrome(int arr[], int size){
   int flag = 0;
   int arr_2[size];
   memcpy(arr_2, arr, size * sizeof(int));
   reverse(arr, arr + size);
   for (int i = 0; i < size; i++)
      if (arr[i] != arr_2[i]){
         flag = 1;
         break;
      }
      if (flag == 0)
         cout << "its a palindrome\n";
      else
         cout << "its not a palindrome\n";
}
int main(){
   int arr[] = { 2,3,4,3,2 };
   int size = sizeof(arr) / sizeof(arr[0]);
   check_palindrome(arr, size);
   return 0;
}

输出

如果运行上述代码,它将生成以下输出:

its a palindrome

更新于:2020年8月13日

2K+浏览量

开启你的职业生涯

通过完成课程获得认证

开始学习
广告