假设我们有一个字符串s,它以HH:MM表示24小时格式的时间,因此HH的范围是0到23,MM的范围是0到59,我们必须找到下一个最接近的时间是字符串形式的回文。如果没有这样的字符串,则返回-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
否则,当分钟<rev_hour时,则
res:= res串联temp串联“:”串联rev_hr_str
res:= res串联temp串联“:0”串联rev_hr_str
temp:=“ 0”
如果h <10,则
temp:= temp并置h
如果rev_hour <10,则
除此以外,
除此以外,
res:= res串联temp串联“:”串联rev_hr_str
res:= res串联temp串联“:0”串联rev_hr_str
temp:=“ 0”
h:= h + 1
rev_hr_str:=反转h作为字符串
rev_hour:=反转h
如果h <10,则
temp:= temp并置h
如果rev_hour <10,则
除此以外,
返回资源
让我们看下面的实现以更好地理解-
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