Menu
CoddyTech

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.
challenge icon

سؤال إضافي

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

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

اختبار #1

اختبار #2

اختبار #3

وسيط

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

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

"ababcccx"