cuốn sách gpt4 ai đã làm

Cấu trúc xử lý tốt dữ liệu tạm thời - ngăn xếp

In lại Tác giả: Sahara Thời gian cập nhật: 2024-09-14 18:23:11 57 4
mua khóa gpt4 Nike

Mục lục
  • Thực hành 1 - Xóa dấu hoa thị khỏi chuỗi


Ngăn xếp và mảng lưu trữ dữ liệu theo cách giống nhau, chúng chỉ là danh sách các phần tử. Sự khác biệt nằm ở ba hạn chế sau của ngăn xếp:

  • Dữ liệu chỉ có thể được chèn từ cuối ngăn xếp;
  • Dữ liệu chỉ có thể bị xóa ở cuối ngăn xếp;
  • Chỉ có thể đọc được phần tử cuối cùng của ngăn xếp.

Ngăn xếp, như hàng đợi, danh sách liên kết... đều là những cấu trúc dữ liệu trừu tượng. Cấu trúc dữ liệu trừu tượng là gì? Nó đề cập đến một hình thức tổ chức dữ liệu không tập trung vào chi tiết triển khai cụ thể mà tập trung vào cấu trúc logic và hoạt động của dữ liệu. Trong khoa học máy tính, cấu trúc dữ liệu trừu tượng xác định cách tổ chức dữ liệu và các hoạt động được phép, nhưng không chỉ định chi tiết cụ thể về cách thực hiện các hoạt động này trong máy tính.

Nói tóm lại, ngăn xếp không có cách triển khai cụ thể trong nhiều ngôn ngữ lập trình. Bạn có thể thêm ba hạn chế sử dụng và phương pháp sử dụng được đề cập ở trên vào mảng dựa trên mảng.

Thực hành 1 - Xóa dấu hoa thị khỏi chuỗi

Yêu cầu câu hỏi.

Ý tưởng giải quyết vấn đề: Hãy cân nhắc việc sử dụng ngăn xếp để giúp giải quyết vấn đề này, vì tính năng nhập sau xuất trước (LIFO) của ngăn xếp rất phù hợp với nhu cầu này.

Sau đó xét hai vị trí của dấu *:

  • *Một
  • Một*

Tương ứng với hai quy trình xử lý ngăn xếp sau đây tương ứng. Đầu tiên chúng ta xem luồng xử lý của vị trí A*: đọc tọa độ thứ nhất, đọc tọa độ thứ hai, đưa phần tử vào ngăn xếp, đọc tọa độ thứ ba, đọc tọa độ thứ tư,...

Hãy xem quy trình xử lý của * Vị trí A: Đọc lần đầu, .

Đọc lần thứ hai, .

Lần đọc thứ ba, cờ -= 1.

Lần đọc thứ tư, .

Lần đọc thứ năm, .

Tham chiếu mã: Mã không được tối ưu hóa lắm, nó chỉ thực hiện chức năng này.

Giải pháp lớp: def RemoveStars(self, s: str) -> str: index_letters = [] flag = 0 for i, v in enumerate(s): if v == "*": if len(index_letters) == 0: flag += 1 if len(index_letters) >= 1: flag -= 1 index_letters.pop() if v != "*": index_letters.append(v) if len(index_letters) >= 1: for i in range(flag): if (len(index_letters) != 0): index_letters.pop() flag -= 1 newStr = "" for v1 in index_letters: newStr += v1 return newStr s = Solution() s2 = "leet**cod*e" s1 = "**o*d*ety" print(s.removeStars(s2))

Cuối cùng, bài viết về ngăn xếp, một cấu trúc xử lý dữ liệu tạm thời tốt, sẽ kết thúc tại đây. Nếu bạn muốn biết thêm về ngăn xếp, một cấu trúc xử lý dữ liệu tạm thời tốt, vui lòng tìm kiếm bài viết CFSDN hoặc tiếp tục duyệt các nội dung liên quan. Tôi hy vọng tất cả các bạn sẽ ủng hộ blog của tôi trong tương lai! .

57 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress