Số nguyên không âm Palindrome là số đọc xuôi hay đọc ngược vẫn chỉ cho ra một số. Chẳng hạn, các số sau đây là số Palindrome 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 41, 55, 66, 77, 88, 99, 101,... Yêu cầu: Sử dụng hàng đợi...

VẬN DỤNG

Nhiệm vụ. Kiếm tra số Palindrome

Số nguyên không âm Palindrome là số đọc xuôi hay đọc ngược vẫn chỉ cho ra một số. Chẳng hạn, các số sau đây là số Palindrome 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 41, 55, 66, 77, 88, 99, 101,...

Yêu cầu: Sử dụng hàng đợi và ngăn xếp để viết chương trình kiểm tra một số nguyên là Palindrome.

Dữ liệu vào: số nguyên a.

Dữ liệu ra: thông báo "a là số Palindrome" nếu a là số Palindrome, ngược lại thông báo "a không là số Palindrome".


Để kiểm tra xem một số nguyên là số Palindrome hay không, chúng ta có thể sử dụng cả hàng đợi và ngăn xếp để thực hiện việc so sánh số đầu và số cuối của số này khi biểu diễn dưới dạng chuỗi. Dưới đây là cách thực hiện theo yêu cầu:

  1. Chuyển đổi số thành chuỗi:

    • Đầu tiên, chúng ta sẽ chuyển đổi số nguyên thành chuỗi để có thể truy cập từng ký tự.

  2. Sử dụng hàng đợi và ngăn xếp:

    • Chúng ta sẽ sử dụng một hàng đợi để lưu trữ các ký tự từ bên trái số.

    • Đồng thời, sử dụng một ngăn xếp để lưu trữ các ký tự từ bên phải số.

  3. So sánh từng cặp ký tự tương ứng:

    • Lấy ký tự từ hàng đợi (từ bên trái) và ký tự từ ngăn xếp (từ bên phải) để so sánh.

    • Nếu tất cả các cặp ký tự đều giống nhau cho đến khi cả hai cấu trúc dữ liệu trống (hoặc chỉ còn một ký tự khi số có độ dài lẻ), thì số đó là Palindrome.

  4. Kết luận:

    • Nếu các ký tự đều giống nhau, thông báo "a là số Palindrome".

    • Ngược lại, thông báo "a không là số Palindrome".

Dưới đây là đoạn mã Python để thực hiện việc kiểm tra số Palindrome sử dụng hàng đợi và ngăn xếp:

def kiem_tra_palindrome(a):

    # Chuyển số nguyên a thành chuỗi

    str_a = str(a)

   

    # Khởi tạo hàng đợi và ngăn xếp

    queue = []

    stack = []

   

    # Đưa các ký tự vào hàng đợi và ngăn xếp

    for char in str_a:

       queue.append(char)

       stack.append(char)

   

    # So sánh từng cặp ký tự

    while queue and stack:

        front = queue.pop(0)

        back = stack.pop()

        if front != back:

           print(f"{a} không là số Palindrome")

           return

   

   print(f"{a} là số Palindrome")

 

# Ví dụ sử dụng:

a = 121

kiem_tra_palindrome(a) # Output: 121 là số Palindrome

 

b = 123

kiem_tra_palindrome(b) # Output: 123 không là số Palindrome

Đoạn mã trên sử dụng hàng đợi để lưu các ký tự từ bên trái và ngăn xếp để lưu các ký tự từ bên phải của số. Sau đó, nó so sánh từng cặp ký tự và đưa ra kết luận liệu số đó có phải là số Palindrome hay không.


Bình luận

Giải bài tập những môn khác