📝 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 retornar 12:01:00

Exemplo 2:

  • s = 12:01:00AM tem de retornar 00: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:

  1. Conseguir remover o {horário} e o {PM|AM}
  2. Se for AM, temos de transformar a hora em ‘00’ caso ela seja ‘12’
  3. 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

  1. Remover a parte do {PM|AM} por meio de slice annotation
  2. Realizar um split pelo caracter :
  3. 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