Cho một mảng arr [n] gồm n số nguyên, nhiệm vụ là tìm xem mảng có phải là palindrome hay không. Chúng tôi phải thực hiện nhiệm vụ đã nêu bằng cách sử dụng STL trong C ++.
Trong C ++ có một tính năng của STL (Thư viện mẫu chuẩn), nó là một tập hợp các lớp mẫu C ++ được sử dụng để cung cấp cấu trúc dữ liệu và một số hàm như ngăn xếp, hàng đợi, danh sách, v.v. Để sử dụng chúng ta phải có kiến thức. của các lớp mẫu.
Palindrome là một chuỗi được đọc giống nhau từ phía trước hoặc phía sau của chuỗi. Một số ví dụ đơn giản về palindrome là - MADAM, RACECAR, v.v. Một mảng sẽ là palindrome như trong ví dụ đã cho bên dưới -
Vì vậy, nhiệm vụ rất đơn giản để tìm ra liệu mảng có phải là palindrome hay không bằng cách sử dụng STL trong C ++ và in "nó là palindrome" nếu nó là palindrome, còn "nó không phải là palindrome" nếu nó không phải là palindrome.
Đầu vào
arr[] = {1, 2, 3, 5, 3, 2, 1}
Đầu ra
its a palindrome
Đầu vào
arr[] = {1, 2, 3, 4, 5}
Đầu ra
its not a palindrome
Phương pháp tiếp cận được sử dụng dưới đây như sau để giải quyết vấn đề
-
Đặt cờ =0 theo mặc định khi bắt đầu.
-
Lặp lại mảng thứ i từ 0 đến kích thước n / 2
-
Đối với mỗi tôi kiểm tra xem arr [i]! =arr [n-i-1] sau đó đặt cờ =1 và ngắt
-
Sau khi vòng lặp kết thúc, Nếu cờ là 1 thì in "nó là một palindrome", còn lại in "nó không phải là palindrome".
Thuật toán
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)
Ví dụ
#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; }
Đầu ra
Nếu chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -
its a palindrome