Menu
CoddyTech
flag Ar iconالعربيةdown icon

Decode String

تكتب السلسلة المُرمَّزة النص المتكرر على هيئة k[text]، وهذا يعني كتابة text عدد k من المرات متتالية. يمكن أن تكون المجموعات متداخلة، لذا فإن 2[a3[b]] تعني abbbabbb. اكتب دالة تستقبل سلسلة مُرمَّزة s وتُرجع السلسلة بعد فك ترميزها.

تبقى الأحرف الواقعة خارج جميع الأقواس كما هي. كل عدد هو عدد صحيح موجب يُكتب مباشرة قبل [، ولا تظهر الأرقام في أي موضع آخر.

الدالة

decodeString(s: string) → string
sstring
السلسلة النصية المُرمَّزة
تُرجعstring
السلسلة النصية المُفكَّكة

القيود

  • 1 ≤ s.length ≤ 104
  • s يحتوي على أحرف إنجليزية صغيرة وأرقام و[ و].
  • s ترميز صالح: يتبع كل [ عددٌ، وله ] مطابق، ولا توجد أقواس فارغة.
  • كل عدد k يحقق 1 ≤ k ≤ 300 ولا يحتوي على صفر بادئ.
  • تتداخل الأقواس بعمق يصل إلى 100 مستوى كحد أقصى.
  • يحتوي النص بعد فك ترميزه على 5 × 104 أحرف على الأكثر.

أمثلة

المدخلات
s = "2[ab]3[c]x"
المخرجات
"ababcccx"
الشرح
يعطي 2[ab] النتيجة abab، ويعطي 3[c] النتيجة ccc. يقع x خارج جميع الأقواس، لذا يُنسخ كما هو، ما يعطي ababcccx.

lock icon+22 اختبارات مخفية عند الإرسال

challenge icon

سؤال إضافي

قد تكون السلسلة المفككة أطول بكثير من المُدخل. كيف ستُعيد الحرف الموجود في الموضع i من السلسلة المفككة فقط، من دون بنائها، عندما يمكن أن يصل طولها إلى 10^18؟

إعادة ضبط الشيفرة
def decodeString(s):
    # اكتب الكود هنا
حالات الاختبار

الحالة 1

الحالة 2

الحالة 3

المدخلات

s = "2[ab]3[c]x"

المتوقع

"ababcccx"