بکندباز

یک تابع بنویسید که یک رشته را به‌عنوان ورودی دریافت کند و کاراکترهای متوالی تکرارشده را به گروه‌هایی با ساختار زیر دسته‌بندی کند:

[[value, first_index, last_index, times_repeated], ..., [value, first_index, last_index, times_repeated]].

توضیحات پارامترها:

    • value: کاراکتر مورد بررسی.
    • first_index: اندیس اولین حضور کاراکتر.
    • last_index: اندیس آخرین حضور متوالی کاراکتر.
    • times_repeated: تعداد دفعات تکرار متوالی کاراکتر.

نمونه ورودی و خروجی

FindRepeating("a") ➞ [["a", 0, 0, 1]]

FindRepeating("aabbb") ➞ [["a", 0, 1, 2], ["b", 2, 4, 3]]

FindRepeating("1337") ➞ [["1", 0, 0, 1], ["3", 1, 2, 2], ["7", 3, 3, 1]]

نکات:

  • اگر رشته خالی باشد، لیست خالی برگردانید: "" ➞ [].
  • مقادیر غیرتکراری باید در همان اندیس شروع و پایان داشته باشند.
  • کاراکترهای متوالی به گروه‌هایی جداگانه تقسیم می‌شوند.
EXPECT_EQ(FindRepeating("a"), std::vector>({{"a", "0", "0", "1"}}));
EXPECT_EQ(FindRepeating("aabbb"), std::vector>({{"a", "0", "1", "2"}, {"b", "2", "4", "3"}}));
EXPECT_EQ(FindRepeating("1337"), std::vector>({{"1", "0", "0", "1"}, {"3", "1", "2", "2"}, {"7", "3", "3", "1"}}));
EXPECT_EQ(FindRepeating("aabbbaabbb"), std::vector>({{"a", "0", "1", "2"}, {"b", "2", "4", "3"}, {"a", "5", "6", "2"}, {"b", "7", "9", "3"}}));
EXPECT_EQ(FindRepeating("addressee"), std::vector>({{"a", "0", "0", "1"}, {"d", "1", "2", "2"}, {"r", "3", "3", "1"}, {"e", "4", "4", "1"}, {"s", "5", "6", "2"}, {"e", "7", "8", "2"}}));
EXPECT_EQ(FindRepeating("1111222233334444"), std::vector>({{"1", "0", "3", "4"}, {"2", "4", "7", "4"}, {"3", "8", "11", "4"}, {"4", "12", "15", "4"}}));
EXPECT_EQ(FindRepeating("1000000000000066600000000000001"), std::vector>({{"1", "0", "0", "1"}, {"0", "1", "13", "13"}, {"6", "14", "16", "3"}, {"0", "17", "29", "13"}, {"1", "30", "30", "1"}}));

هنوز پاسخی برای این تمرین ثبت نشده است

نظرات

*
*

تمرینات مرتبط