Giả sử chúng ta có một chuỗi s biểu thị thời gian ở định dạng 24 giờ là HH:MM để HH sẽ nằm trong khoảng 0 đến 23 và MM sẽ nằm trong khoảng 0 đến 59, Chúng ta phải tìm thời gian gần nhất tiếp theo là palindrome khi được đọc dưới dạng chuỗi. Nếu không có chuỗi như vậy, hãy trả về -1.
Vì vậy, nếu đầu vào là "22:22", thì đầu ra sẽ là "23:32".
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
n:=kích thước của s
-
giờ_string:=chuỗi con của s [từ chỉ mục 0 đến 2]
-
phút:=chuỗi con của s [từ chỉ số 3 đến 5] và chuyển nó thành số nguyên
-
rev_hour:=đảo ngược chuỗi giờ và chuyển nó thành số
-
rev_hr_str:=đã đảo ngược giờ_string
-
h:=giờ_string dưới dạng số nguyên
-
temp:=blank string, res:=blank string
-
nếu h là 23 và phút> =32 thì
-
res:=-1
-
-
ngược lại khi phút
-
nếu h <10 thì
-
tạm thời:="0"
-
-
temp:=temp nối liền h
-
nếu rev_hour <10, thì
-
res:=res concatenate temp concatenate ":0" concatenate rev_hr_str
-
-
nếu không,
-
res:=res concatenate temp concatenate ":" concatenate rev_hr_str
-
-
-
nếu không,
-
h:=h + 1
-
rev_hr_str:=đảo ngược h thành chuỗi
-
rev_hour:=đã đảo ngược h
-
nếu h <10 thì
-
tạm thời:="0"
-
-
temp:=temp nối liền h
-
nếu rev_hour <10, thì
-
res:=res concatenate temp concatenate ":0" concatenate rev_hr_str
-
-
nếu không,
-
res:=res concatenate temp concatenate ":" concatenate rev_hr_str
-
-
-
trả lại res
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
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))
Đầu vào
"22:22"
Đầu ra
23:32