สมมติว่าเรามีสตริงที่แทนเวลาในรูปแบบ 24 ชั่วโมงเป็น HH:MM เพื่อให้ 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 แล้ว
-
อุณหภูมิ :="0"
-
-
temp :=temp concatenate h
-
ถ้า rev_hour <10 แล้ว
-
res :=res concatenate temp concatenate ":0" เชื่อม rev_hr_str
-
-
มิฉะนั้น
-
res :=res concatenate temp concatenate ":" concatenate rev_hr_str
-
-
-
มิฉะนั้น
-
ชั่วโมง :=ชั่วโมง + 1
-
rev_hr_str :=กลับด้านของ h เป็นสตริง
-
rev_hour :=กลับด้านของ h
-
ถ้า h <10 แล้ว
-
อุณหภูมิ :="0"
-
-
temp :=temp concatenate h
-
ถ้า rev_hour <10 แล้ว
-
res :=res concatenate temp concatenate ":0" เชื่อม 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