使用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+瀏覽量

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告