DEV Community

Francisco Zanfranceschi
Francisco Zanfranceschi

Posted on

[Desafio] - "Low Level" toInt Function

Conteúdo original em https://x.com/zanfranceschi/status/1819413388360810601


Ei dev,

Um desafio "low level" pra você.

Crie uma função toInt que transforma strings numéricas (ex. "42") em números inteiros SEM usar funções embutidas/nativas da sua lang como int, intval, parseInt, etc.

Dica: talvez você precise se apoiar numa tabela de caracteres.

Top comments (3)

Collapse
 
gabrielmodog profile image
Gabriel Tavares

Com Go o que me veio na cabeça foi algo assim:

// 48 é o valor onde começa os dígitos, representa 0 na tabela ASCII
func toInt(str string) int {
    var integer int
    validNumber, _ := regexp.Compile("[0-9]+")
    justDigits := validNumber.FindString(str)
    n := len(justDigits) // tamanho da slice com apenas os dígitos

    if string(str[0]) == "-" {
        for i := range n {
            integer = integer*10 + (int(justDigits[i]) - 48)
        }
        return -integer
    }

    for i := range n {
        integer = integer*10 + (int(justDigits[i]) - 48)
    }
    return integer
}
Enter fullscreen mode Exit fullscreen mode

Dava para fazer outros truques com Go, já que as caracteres/strings primeiramente são representados como byte, então pode ser algo que ajude na conversão.

Collapse
 
eduardoklosowski profile image
Eduardo Klosowski

Um desafio interessante também é fazer a função inversa, que transforme número em string, a lógica usada pode ser a mesma, mas é interessante ver que operação que deve ser utilizada para se ter o mesmo resultado.

Collapse
 
trickaugusto profile image
Patrick Augusto

JS:

`function toInt(string) {
return string * 1;
}

console.log(toInt("42"))`

Passa? hehehe