কম্পিউটার

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


ধরুন আমাদের কাছে একটি স্ট্রিং s আছে যা HH:MM হিসাবে 24 ঘন্টা বিন্যাসে একটি সময়কে উপস্থাপন করে যাতে HH 0 থেকে 23 রেঞ্জে এবং MM 0 থেকে 59 রেঞ্জের মধ্যে থাকবে, আমাদের পরবর্তী নিকটতম সময়টি খুঁজে বের করতে হবে যা হল একটি স্ট্রিং হিসাবে পড়া যখন palindrome. যদি এরকম কোন স্ট্রিং না থাকে, তাহলে -1 রিটার্ন করুন।

সুতরাং, ইনপুট যদি "22:22" এর মত হয়, তাহলে আউটপুট হবে "23:32"।

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

  • n :=s

    এর আকার
  • hour_string :=s এর সাবস্ট্রিং [সূচী 0 থেকে 2]

  • মিনিট :=s এর সাবস্ট্রিং [সূচী 3 থেকে 5] এবং এটিকে পূর্ণসংখ্যাতে রূপান্তর করুন

  • rev_hour :=hour_string বিপরীত করুন এবং এটিকে সংখ্যায় রূপান্তর করুন

  • rev_hr_str :=hour_string এর বিপরীত

  • h :=hour_string পূর্ণসংখ্যা হিসাবে

  • temp :=ফাঁকা স্ট্রিং, res :=ফাঁকা স্ট্রিং

  • যদি h 23 এবং মিনিট>=32 হয়, তাহলে

    • res :=-1

  • অন্যথায় যখন মিনিট

    • যদি h <10, তাহলে

      • temp :="0"

    • temp :=temp concatenate h

    • যদি rev_hour <10 হয়, তাহলে

      • res :=res concatenate temp concatenate ":0" concatenate rev_hr_str

    • অন্যথায়,

      • res :=res concatenate temp concatenate ":" concatenate rev_hr_str

  • অন্যথায়,

    • h :=h + 1

    • rev_hr_str :=স্ট্রিং হিসাবে h এর বিপরীত

    • rev_hour :=h

      এর বিপরীত
    • যদি h <10, তাহলে

      • temp :="0"

    • temp :=temp concatenate h

    • যদি rev_hour <10 হয়, তাহলে

      • res :=res concatenate temp concatenate ":0" concatenate rev_hr_str

    • অন্যথায়,

      • res :=res concatenate temp concatenate ":" concatenate rev_hr_str

  • রিটার্ন রিটার্ন

উদাহরণ

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

def get_next_palindrome_time(s) :
   n = len(s)
   hour_string = s[0 : 2]
   minute = int(s[3 : 5])
   rev_hour = int(hour_string[::-1])
   rev_hr_str = hour_string[::-1]
   h = int(hour_string)
   temp = ""
   res = ""
   if (h == 23 and minute >= 32) :
      res = "-1"
   elif (minute < rev_hour) :
      if (h < 10) :
         temp = "0"
      temp = temp + str(h)
      if (rev_hour < 10) :
         res = res + temp + ":0" + rev_hr_str
      else :
         res = res + temp + ":" + rev_hr_str
   else :
      h += 1
      rev_hr_str = str(h)[::-1]
      rev_hour = int(rev_hr_str)
      if (h < 10) :
         temp = "0"
      temp = temp + str(h)
      if (rev_hour < 10) :
         res = res + temp + ":0" + rev_hr_str
      else :
         res = res + temp + ":" + rev_hr_str
return res
s = "22:22"
print(get_next_palindrome_time(s))

ইনপুট

"22:22"

আউটপুট

23:32

  1. পাইথনে প্রদত্ত শর্তকে সন্তুষ্ট করে এমন অভিধানিকভাবে ক্ষুদ্রতম স্ট্রিংটি খুঁজুন

  2. পাইথনে প্রদত্ত ক্রিয়াকলাপ সম্পাদন করার পরে শূন্যে হ্রাস করা সর্বশেষ সূচকটি সন্ধান করুন

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

  4. পাইথনে প্রদত্ত স্ট্রিংয়ের সমস্ত স্বতন্ত্র প্যালিনড্রোমিক সাব-স্ট্রিং খুঁজুন