Menu
CoddyTech

Group Anagrams

لديك قائمة من الكلمات strs. تُعدّ كلمتان متطابقتين في الحروف إذا أمكن إعادة ترتيب حروف إحداهما لتكوين الأخرى، مع استخدام كل حرف العدد نفسه من المرات. اجمع كل كلمة مع جميع الكلمات المطابقة لها في الحروف، وأعِد سلسلة نصية واحدة لكل مجموعة: كلماتها مرتبة أبجديًا، ومفصولة بمسافات مفردة. رتّب المجموعات أبجديًا حسب الكلمة الأولى فيها.

إذا تكررت كلمة، فأدرجها مرتين في مجموعتها، والكلمة التي ليس لها كلمة مطابقة في الحروف تُشكّل مجموعة من كلمة واحدة. والترتيب الأبجدي يعني ترتيب القاموس: تأتي aab قبل ab، وتأتي ab قبل abc.

الدالة

groupAnagrams(strs: string-array) → string-array
strsstring-array
الكلمات المراد تجميعها، أحرف صغيرة فقط
تُرجعstring-array
سلسلة نصية واحدة لكل مجموعة: كلماتها مرتبة ومفصولة بمسافات، والمجموعات مرتبة حسب كلمتها الأولى

القيود

  • 1 ≤ strs.length ≤ 4000
  • 1 ≤ strs[i].length ≤ 8
  • كل كلمة تتكوّن من أحرف إنجليزية صغيرة فقط.

أمثلة

المدخلات
strs = ["listen", "stone", "silent", "notes", "enlist", "onset", "tones", "apple"]
المخرجات
["apple", "enlist listen silent", "notes onset stone tones"]
الشرح
تستخدم enlist وlisten وsilent الأحرف e وi وl وn وs وt مرةً واحدةً لكلٍّ منها. وتشترك notes وonset وstone وtones في الأحرف e وn وo وs وt. أما apple فلا يطابق أي شيء، وباعتباره الكلمة الأولى، يتصدر.
challenge icon

سؤال إضافي

إذا كان من الممكن أن تحتوي الكلمات على أي محارف Unicode، فأي مفتاح سيظل صالحًا: الأحرف المرتبة أم أعداد الأحرف؟ وما الذي ستغيّره فيه؟

إعادة ضبط الشيفرة
def groupAnagrams(strs):
    # اكتب الكود هنا

اختبار #1

اختبار #2

اختبار #3

وسيط

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

الإخراج المتوقع

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