📝 Descrição
Given a time in -hour AM/PM format, convert it to military (24-hour) time.
Note:
- 12:00:00AM on a 12-hour clock is 00:00:00 on a 24-hour clock.
- 12:00:00PM on a 12-hour clock is 12:00:00 on a 24-hour clock.
📌 Exemplos
Examplo 1:
s = 12:01:00PM
tem de retornar12:01:00
Exemplo 2:
s = 12:01:00AM
tem de retornar00:01:00
✅ Casos de teste
Caso 1
Entrada
07:05:45PM
Saída
19:05:45
🚀 Como resolvi?
Pô, primeiro temos de notar a forma como o horário é fornecido. O padrão é algo do tipo {horario}{AM|PM}. Dessa forma, temos de:
- Conseguir remover o {horário} e o {PM|AM}
- Se for AM, temos de transformar a hora em ‘00’ caso ela seja ‘12’
- Se for PM, temos de adicionar 12 a hora caso ela não seja 12.
Para removermos o {PM|AM} em python utilizaremos a slice annotation
. Já obtermos o {horário} iremos
- Remover a parte do {PM|AM} por meio de
slice annotation
- Realizar um split pelo caracter
:
- Transformar em int os valores
🛠️ Implementação
def timeConversion(s):
period = s[-2:]
hour, minute, second = map(int, s[:-2].split(":"))
if period == "AM":
if hour == 12:
hour = 0
else:
if hour != 12:
hour += 12
return f"{hour:02}:{minute:02}:{second:02}"
🧠 O que aprendemos?
Dividir o problema em problema menores sempre nos ajudará. Além disso, saber trabalhar com slice annotation
acaba sendo uma mão na roda. Em nosso caso, a aplicação dessa técnica poderia nos retornar:
s[-2:]
: {AM | PM}s[:-2]
: A parte do horário