Menu
CoddyTech

Group Anagrams

Trung bìnhBămSắp xếppython iconjava iconcpp iconc iconjs icon+10

Bạn nhận được một danh sách các từ strs. Hai từ là từ đảo chữ khi một từ có thể được tạo thành bằng cách sắp xếp lại các ký tự của từ kia, mỗi ký tự xuất hiện cùng số lần. Gom mỗi từ cùng tất cả các từ đảo chữ của nó, rồi trả về một chuỗi cho mỗi nhóm: các từ trong nhóm được sắp xếp theo thứ tự bảng chữ cái và nối với nhau bằng một dấu cách. Sắp xếp các nhóm theo thứ tự bảng chữ cái dựa trên từ đầu tiên của mỗi nhóm.

Một từ lặp lại sẽ xuất hiện hai lần trong nhóm của nó, còn một từ không có từ đảo chữ sẽ tạo thành một nhóm chỉ có một từ. Thứ tự bảng chữ cái ở đây là thứ tự trong từ điển: aab đứng trước ab, và ab đứng trước abc.

Hàm

groupAnagrams(strs: string-array) → string-array
strsstring-array
các từ cần nhóm, chỉ dùng chữ cái viết thường
Trả vềstring-array
mỗi nhóm một chuỗi: các từ trong chuỗi được sắp xếp rồi nối bằng dấu cách, các nhóm được sắp xếp theo từ đầu tiên

Ràng buộc

  • 1 ≤ strs.length ≤ 4000
  • 1 ≤ strs[i].length ≤ 8
  • Mỗi từ chỉ chứa các chữ cái tiếng Anh viết thường.

Ví dụ

Đầu vào
strs = ["listen", "stone", "silent", "notes", "enlist", "onset", "tones", "apple"]
Đầu ra
["apple", "enlist listen silent", "notes onset stone tones"]
Giải thích
enlist, listen và silent mỗi từ sử dụng các chữ cái e, i, l, n, s và t một lần. notes, onset, stone và tones có chung các chữ cái e, n, o, s và t. apple không khớp với từ nào và đứng đầu theo thứ tự từ.
challenge icon

Câu hỏi mở rộng

Nếu các từ có thể chứa bất kỳ ký tự Unicode nào, cách nào vẫn hiệu quả: sắp xếp các chữ cái hay đếm số lần xuất hiện của từng chữ cái, và bạn sẽ thay đổi cách đó như thế nào?

Đặt lại code
def groupAnagrams(strs):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

strs = ["listen", "stone", "silent", "notes", "enlist", "onset", "tones", "apple"]

Đầu ra mong đợi

["apple", "enlist listen silent", "notes onset stone tones"]