Maison  >  Article  >  développement back-end  >  Comment imprimer un numéro différent du numéro précédent ?

Comment imprimer un numéro différent du numéro précédent ?

WBOY
WBOYavant
2024-02-06 09:51:09969parcourir

Comment imprimer un numéro différent du numéro précédent ?

Contenu de la question

Par exemple, si j'ai le numéro 35565, la sortie est 3565.

Donc, mon extrait de code contient des chiffres uniques, mais je ne sais pas comment conserver le numéro précédent pour vérifier avec le numéro suivant.

for {
num = num / 10
fmt.Print(num)
        
if num/10 == 0 {
    break
}
}

Réponse correcte


Cette méthode divise le nombre en nombres de droite à gauche, les stocke sous forme de tranches entières, puis itère les nombres de gauche à droite pour construire un nombre avec des chiffres « consécutivement uniques ».

J'ai d'abord essayé de factoriser le nombre de gauche à droite, mais je ne savais pas comment gérer les zéros fictifs ; en le factorisant de droite à gauche, je savais comment capturer ces zéros.

// unique removes sequences of repeated digits from non-negative x,
// returning only "sequentially unique" digits:
// 12→12, 122→12, 1001→101, 35565→3565.
//
// Negative x yields -1.
func unique(x int) int {
    switch {
    case x < 0:
        return -1
    case x <= 10:
        return x
    }

    // -- Split x into its digits
    var (
        mag     int   // the magnitude of x
        nDigits int   // the number of digits in x
        digits  []int // the digits of x
    )

    mag = int(math.Floor(math.Log10(float64(x))))
    nDigits = mag + 1

    // work from right-to-left to preserve place-holding zeroes
    digits = make([]int, nDigits)
    for i := nDigits - 1; i >= 0; i-- {
        digits[i] = x % 10
        x /= 10
    }

    // -- Build new, "sequentially unique", x from left-to-right
    var prevDigit, newX int

    for _, digit := range digits {
        if digit != prevDigit {
            newX = newX*10 + digit
        }
        prevDigit = digit
    }

    return newX
}

C'est un terrain de jeu pour tester.

Peut être adapté pour gérer les nombres négatifs en retournant le signe négatif au début et en le restaurant à la fin.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer