Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 회문이며 주어진 시간 이후에 오는 시간 찾기

<시간/>

24시간 형식의 시간을 HH:MM으로 나타내는 문자열 s가 있어서 HH가 0~23 범위에 있고 MM이 0~59 범위에 있다고 가정합니다. 다음으로 가장 가까운 시간을 찾아야 합니다. 문자열로 읽을 때 회문. 해당 문자열이 없으면 -1을 반환합니다.

따라서 입력이 "22:22"와 같으면 출력은 "23:32"가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • n :=s

    의 크기
  • hour_string :=s의 부분 문자열[인덱스 0에서 2까지]

  • min :=s[인덱스 3에서 5까지]의 부분 문자열을 정수로 변환

  • rev_hour :=hour_string을 반대로 하여 숫자로 변환

  • rev_hr_str :=hour_string의 반전

  • h :=hour_string을 정수로

  • temp :=빈 문자열, res :=빈 문자열

  • h가 23이고 분이>=32인 경우

    • 해상도 :=-1

  • 그렇지 않으면 분이

    • h <10이면

      • 온도 :="0"

    • temp :=임시 연결 h

    • rev_hour <10이면

      • res :=res 연결 임시 연결 ":0" 연결 rev_hr_str

    • 그렇지 않으면

      • res :=res 연결 임시 연결 ":" 연결 rev_hr_str

  • 그렇지 않으면

    • h :=h + 1

    • rev_hr_str :=h를 문자열로 반전

    • rev_hour :=h의 반전

    • h <10이면

      • 온도 :="0"

    • temp :=임시 연결 h

    • rev_hour <10이면

      • res :=res 연결 임시 연결 ":0" 연결 rev_hr_str

    • 그렇지 않으면

      • res :=res 연결 임시 연결 ":" 연결 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