কম্পিউটার

একটি তালিকার প্রতিটি পার্টিশনের আকার খুঁজে বের করার প্রোগ্রাম যেখানে প্রতিটি অক্ষর পাইথনে সর্বাধিক এক টুকরো প্রদর্শিত হয়


ধরুন আমাদের একটি ছোট হাতের স্ট্রিং s আছে, আমরা s কে যতটা সম্ভব টুকরো টুকরো করে ভাগ করতে পারি যাতে প্রতিটি অক্ষর সর্বাধিক এক টুকরোতে উপস্থিত হয় এবং একটি তালিকা হিসাবে পার্টিশনের আকার খুঁজে পায়।

সুতরাং, যদি ইনপুটটি s ="momoplaykae" এর মত হয়, তাহলে আউটপুট হবে [4, 1, 1, 4, 1], যেহেতু স্ট্রিংটি ["momo", "p", "l", "এ বিভক্ত হয়। ayka", "e"]।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • গণনা :=একটি মানচিত্র যাতে s-এ অক্ষর থাকে এবং তাদের উপস্থিতি

  • out :=একটি নতুন তালিকা, stk :=একটি খালি স্ট্যাক

  • দৈর্ঘ্য :=0

  • প্রতিটি অক্ষরের জন্য s, করুন

    • গণনা [চর] :=গণনা [চর] - 1

    • দৈর্ঘ্য :=দৈর্ঘ্য + 1

    • যদিও গণনা [চর] 0 এর মত নয় বা stk খালি নয়, করুন

      • যদি গণনা [চর] 0 এর সমান না হয়, তাহলে

        • stk

          -এ char ধাক্কা দিন
        • লুপ থেকে বেরিয়ে আসুন

      • যদি stk খালি না হয় এবং গণনা [stk-এর উপরে] 0 এর সমান হয়, তাহলে

        • stk

          থেকে পপ
      • অন্যথায়,

        • লুপ থেকে বেরিয়ে আসুন

    • যদি stk খালি হয় এবং গণনা [char] 0 এর মত হয়, তাহলে

      • আউটের পরে দৈর্ঘ্য সন্নিবেশ করুন

      • দৈর্ঘ্য :=0

  • ফিরে আসুন

উদাহরণ

আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -

from collections import Counter
class Solution:
   def solve(self, s):
      count = Counter(s)
      out = []
      stk = []
      length = 0
      for char in s:
         count[char] -= 1
         length += 1
         while count[char] != 0 or stk:
            if count[char] != 0:
               stk.append(char)
               break
            if stk and count[stk[-1]] == 0:
               stk.pop()
            else:
               break
            if not stk and count[char] == 0:
               out += [length]
               length = 0
         return out
ob = Solution()
s = "momoplaykae"
print(ob.solve(s))

ইনপুট

"momoplaykae"

আউটপুট

[4, 1, 1, 4, 1]

  1. পাইথনে একটি তালিকায় সর্বাধিক ঘন ঘন উপাদান খুঁজুন

  2. পাইথন প্রোগ্রাম একটি তালিকার ক্রমবর্ধমান যোগফল খুঁজে বের করতে

  3. পাইথন প্রোগ্রাম একটি তালিকায় সবচেয়ে বড় সংখ্যা খুঁজে বের করতে

  4. পাইথনে একটি তালিকার আকার খুঁজুন