কম্পিউটার টিউটোরিয়াল

পাইথনে দেওয়া সময়ের পরের প্যালিনড্রোমিক সময় বের করুন


সমস্যা বিবরণ

২৪ ঘণ্টার ফরম্যাটে HH:MM আকারে একটি সময় স্ট্রিং দেওয়া আছে। এর পরের সবচেয়ে কাছের প্যালিনড্রোমিক সময় (স্ট্রিং হিসেবে পড়লে প্যালিনড্রোম) বের করতে হবে। না থাকলে -1 রিটার্ন করুন।

উদাহরণস্বরূপ, ইনপুট "22:22" হলে আউটপুট হবে "23:32"।

সমাধানের ধাপসমূহ

  1. ঘণ্টা স্ট্রিং hour_string = s[0:2] এবং মিনিট minute = int(s[3:5]) বের করুন।
  2. ঘণ্টা স্ট্রিং উল্টে দিয়ে rev_hour (ইন্টিজার) এবং rev_hr_str বানান।
  3. যদি ঘণ্টা ২৩ এবং মিনিট >= ৩২ হয়, রিটার্ন -1।
  4. যদি মিনিট < rev_hour হয়, তবে একই ঘণ্টায় rev_hour মিনিট ব্যবহার করুন।
  5. অন্যথায় ঘণ্টা ১ বাড়িয়ে নতুন ঘণ্টার রিভার্স দিয়ে মিনিট বানান।
  6. ফরম্যাট ঠিক করে রিটার্ন করুন।

পাইথন কোড উদাহরণ

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 += str(h)
        if rev_hour < 10:
            res = temp + ":0" + rev_hr_str
        else:
            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 += str(h)
        if rev_hour < 10:
            res = temp + ":0" + rev_hr_str
        else:
            res = temp + ":" + rev_hr_str
    return res

s = "22:22"
print(get_next_palindrome_time(s))  # আউটপুট: 23:32

ইনপুট

"22:22"

আউটপুট

23:32
  1. পাইথনে প্রিফিক্স অ্যারে অনুযায়ী লেক্সিকোগ্রাফিক্যালি সবচেয়ে ছোট স্ট্রিং নির্ণয়

  2. পাইথনে অ্যারে-র উপাদানগুলো শূন্য হয়ে যাওয়ার শেষ ইনডেক্স খুঁজে বের করা

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

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