Syntax error Find the time which is palindromic and comes after the given time in Python

Find the time which is palindromic and comes after the given time in Python



Suppose we have a string s that represents a time in the 24 hours format as HH:MM so that HH will be in range 0 to 23 and MM will be in range 0 to 59, We have to find the next closest time which is a palindrome when read as a string. If there is no such string, then return -1.

So, if the input is like "22:22", then the output will be "23:32".

To solve this, we will follow these steps −

  • n := size of s

  • hour_string := substring of s[from index 0 to 2]

  • minute := substring of s[from index 3 to 5] and convert it to integer

  • rev_hour := reverse the hour_string and convert it to number

  • rev_hr_str := reversed of hour_string

  • h := hour_string as integer

  • temp := blank string, res := blank string

  • if h is 23 and minute >= 32, then

    • res := -1

  • otherwise when minute < rev_hour , then

    • if h < 10, then

      • temp := "0"

    • temp := temp concatenate h

    • if rev_hour < 10, then

      • res := res concatenate temp concatenate ":0" concatenate rev_hr_str

    • otherwise,

      • res := res concatenate temp concatenate ":" concatenate rev_hr_str

  • otherwise,

    • h := h + 1

    • rev_hr_str := reversed of h as string

    • rev_hour := reversed of h

    • if h < 10, then

      • temp := "0"

    • temp := temp concatenate h

    • if rev_hour < 10, then

      • res := res concatenate temp concatenate ":0" concatenate rev_hr_str

    • otherwise,

      • res := res concatenate temp concatenate ":" concatenate rev_hr_str

  • return res

Example

Let us see the following implementation to get better understanding −

 Live Demo

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))

Input

"22:22"

Output

23:32
Updated on: 2020-08-27T12:31:55+05:30

375 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements