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