Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรมตรวจสอบ Array คือ Palindrome หรือไม่ใช้ STL ใน C++


ให้อาร์เรย์ arr[n] ของจำนวนเต็ม n จำนวนเต็ม ภารกิจคือค้นหาว่าอาร์เรย์นั้นเป็นพาลินโดรมหรือไม่ เราต้องทำงานที่ระบุโดยใช้ STL ใน C++

ใน C++ มีฟีเจอร์ของ STL (Standard Template Library) เป็นชุดของคลาสเทมเพลต C++ ที่ใช้จัดทำโครงสร้างข้อมูลและฟังก์ชันต่างๆ เช่น สแต็ค คิว รายการ ฯลฯ หากต้องการใช้สิ่งนี้ต้องมีความรู้ ของคลาสเทมเพลต

Palindrome เป็นซีเควนซ์ที่อ่านเหมือนกันจากด้านหน้าหรือด้านหลังของซีเควนซ์ ตัวอย่างง่ายๆ ของ palindrome ได้แก่ − MADAM, RACECAR เป็นต้น อาร์เรย์จะเป็น palindrome เช่นในตัวอย่างด้านล่าง −

โปรแกรมตรวจสอบ Array คือ Palindrome หรือไม่ใช้ STL ใน C++

ดังนั้น งานนี้จึงง่ายในการค้นหาว่าอาร์เรย์นั้นเป็น palindrome หรือไม่ใช้ STL ใน C++ และพิมพ์ "its a palindrome" หากเป็น palindrome อื่น "ไม่ใช่ palindrome" หากไม่ใช่ palindrome

ป้อนข้อมูล

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

ผลผลิต

its a palindrome

ป้อนข้อมูล

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

ผลผลิต

its not a palindrome

แนวทางที่ใช้ด้านล่างมีดังต่อไปนี้ในการแก้ปัญหา

  • ตั้งค่าสถานะ =0 โดยค่าเริ่มต้นในการเริ่มต้น

  • วนอาร์เรย์ i จาก 0 ถึงขนาด n/2

  • ทุกครั้งที่ฉันตรวจสอบว่า arr[i]! =arr[n-i-1] แล้วตั้งค่าแฟล็ก =1 แล้วแตก

  • หลังจากวนซ้ำสิ้นสุดลง ถ้าแฟล็กเป็น 1 ให้พิมพ์ "its a palindrome" มิฉะนั้นจะพิมพ์ "its not a palindrome"

อัลกอริทึม

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