sách gpt4 ai đã đi

Tìm từ dài nhất cho một tập hợp nhất định - Stack Overflow

In lại Tác giả: IT Lao Gao Thời gian cập nhật: 2023-10-28 21:13:13 29 4
mua khóa gpt4 Nike

Đây là câu hỏi phỏng vấn của Google và hầu hết các câu trả lời tôi tìm thấy trực tuyến đều sử dụng HashMap hoặc các cấu trúc dữ liệu tương tự. Tôi đang cố gắng tìm giải pháp sử dụng Trie nếu có thể. Có ai có thể cho tôi một số gợi ý không?

Đây là một vấn đề: bạn được cung cấp một cuốn từ điển với mỗi từ trên một dòng. Ví dụ,

bàn tính 
cơ delta
gaff
hươu cao cổ
micrô
rạn san hô
qar

Bạn cũng sẽ nhận được một bộ thư. Ví dụ,

{a, e, f, f, g, i, r, q}. 

Nhiệm vụ là tìm từ dài nhất trong từ điển có thể được đánh vần từ một tập hợp các chữ cái. Ví dụ, câu trả lời đúng cho giá trị ví dụ ở trên là "hươu cao cổ". (Lưu ý rằng "reef" không phải là câu trả lời khả thi, vì tập hợp các chữ cái chỉ chứa một chữ "e".)

Sẽ ưu tiên triển khai Java.

1 Câu trả lời

Không có mã Java. Bạn có thể tự mình tìm ra cách giải quyết.

Giả sử chúng ta cần thực hiện điều này nhiều lần, tôi sẽ thực hiện như thế này:

  • Đầu tiên, tôi tạo một "chữ ký" cho mỗi từ trong từ điển bao gồm 26 bit, với bit[chữ cái] được đặt nếu từ đó chứa một (hoặc nhiều) trường hợp chữ cái. Những chữ ký này có thể được mã hóa trong Java số nguyên.

  • Sau đó, tạo một bản đồ ánh xạ các chữ ký thành danh sách các từ có chữ ký đó.

Tìm kiếm bằng bản đồ được tính toán trước:

  • Tạo chữ ký cho nhóm chữ cái mà bạn muốn tìm từ.

  • Sau đó lặp lại các phím đã ánh xạ, tìm kiếm (khóa & (~chữ ký) == 0) chìa khóa. Điều này cung cấp cho bạn một danh sách ngắn các "chữ cái có thể" không bao gồm bất kỳ chữ cái nào không có trong tập chữ cái mong muốn.

  • Lặp lại danh sách ngắn, tìm kiếm từng chữ cái cần thiếtSố đúngTừ có thời gian nhấn lâu nhất sẽ được ghi lại.


Ghi chú:

  1. Mặc dù tìm kiếm chính chủ yếu dựa trên số lượng từ trong từ điển TRÊN)nhưng chi phí xét nghiệm rất rẻ.

  2. Cách tiếp cận này có ưu điểm là yêu cầu cấu trúc dữ liệu trong bộ nhớ tương đối nhỏ và (nhiều khả năng) có tính cục bộ tốt. Điều này có thể giúp tăng tốc độ tìm kiếm của bạn.


Điều này là để tăng tốc độ trên TRÊN) Một ý tưởng cho các bước tìm kiếm.

Bắt đầu từ hình ảnh chữ ký ở trên, cho tất cảThực raTạo một đồ thị phái sinh (được tính toán trước) cho các từ chứa các cặp chữ cái nhất định; ví dụ, một đồ thị cho các từ chứa AB, AC, BC, ... và YZ. Sau đó, nếu bạn đang tìm kiếm các từ chứa (ví dụ) P và Q, bạn chỉ cần quét biểu đồ đạo hàm PQ. Điều này sẽ làm giảm TRÊN) Về 26^2 ...với cái giá phải trả là mất nhiều bộ nhớ hơn cho các bản đồ bổ sung.

Có thể mở rộng đến 3 chữ cái trở lên, nhưng nhược điểm là việc sử dụng bộ nhớ sẽ tăng đột biến.

Một thay đổi tiềm năng khác là (bằng cách nào đó) thiên vị việc lựa chọn các cặp chữ cái đầu tiên theo hướng các chữ cái/cặp ít xuất hiện hơn. Nhưng điều này sẽ làm tăng chi phí ban đầu, có thể lớn hơn mức tiết kiệm (trung bình) mà bạn nhận được khi tìm kiếm danh sách ngắn hơn.

Liên quan đến java - tìm từ dài nhất trong một tập hợp nhất định, chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/16868941/

29 4 0
Bài viết được đề xuất: Các tệp lớp JDK 7 tương thích ngược với JDK 6
Bài viết được đề xuất: matplotlib show() không hoạt động hai lần
Bài viết được đề xuất: Gọi các hàm Cython từ C++
Bài viết được đề xuất: Gradle trả về gói không tồn tại
CNTT Lao Gao
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com