একটি স্ট্রিং s দেওয়া আছে যা hh:mm ফরম্যাটে টাইম রিপ্রেজেন্ট করে। কিছু ডিজিট '?' দিয়ে লুকানো আছে। ২৪ ঘণ্টা কلاک অনুযায়ী বৈধ টাইম ০০:০০ থেকে ২৩:৫৯ পর্যন্ত। '?' গুলো রিপ্লেস করে সম্ভাব্য সর্বশেষ (লেটেস্ট) বৈধ টাইম বের করতে হবে।
ইনপুট: s = "1?:?5" → আউটপুট: 13:55। '1' দিয়ে শুরু হওয়া সর্বশেষ ঘন্টা ১৩, এবং '5' দিয়ে শেষ হওয়া সর্বশেষ মিনিট ৫৫।
সমাধানের ধাপসমূহ
ans := খালি লিস্ট
max_time := ['2','3',':','5','9'] (সর্বোচ্চ সম্ভাব্য টাইম)
যদি max_time[0] < '2': max_time[1] = '9'
যদি '9' >= max_time[1] > '3': max_time[0] = '1'
(max_time, s) জোড়ার প্রতিটি (mx, digit) এর জন্য:
- যদি digit অঙ্ক হয়: ans-এ digit যোগ করুন
- অন্যথায়: ans-এ mx যোগ করুন
ans জয়েন করে রিটার্ন করুন
উদাহরণ (Python)
def solve(s):
ans = []
max_time = ['2','3',':','5','9']
if max_time[0] < '2':
max_time[1] = '9'
if '9' >= max_time[1] > '3':
max_time[0] = '1'
for mx, digit in zip(max_time, s):
if digit.isdigit():
ans.append(digit)
else:
ans.append(mx)
return ''.join(ans)
s = "1?:?5"
print(solve(s))
ইনপুট
"1?:?5"
আউটপুট
13:55