Heim  >  Artikel  >  Backend-Entwicklung  >  Wie drucke ich eine Nummer aus, die sich von der vorherigen Nummer unterscheidet?

Wie drucke ich eine Nummer aus, die sich von der vorherigen Nummer unterscheidet?

WBOY
WBOYnach vorne
2024-02-06 09:51:09968Durchsuche

Wie drucke ich eine Nummer aus, die sich von der vorherigen Nummer unterscheidet?

Frageninhalt

Wenn ich beispielsweise die Nummer 35565 habe, ist die Ausgabe 3565.

Mein Codeausschnitt erhält also die einzelnen Ziffern, aber ich weiß nicht, wie ich die vorherige Nummer behalten soll, um sie mit der nächsten Nummer zu vergleichen.

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

Richtige Antwort


Diese Methode zerlegt die Zahl von rechts nach links in Zahlen, speichert sie als ganzzahlige Abschnitte und iteriert die Zahlen dann von links nach rechts, um eine Zahl mit „aufeinanderfolgenden eindeutigen“ Ziffern zu erstellen.

Ich habe zunächst versucht, die Zahl von links nach rechts zu faktorisieren, wusste aber nicht, wie ich mit den Platzhalter-Nullen umgehen sollte. Ich wusste, wie ich diese Nullen erfassen sollte.

// 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
}

Dies ist ein Go-Spielplatz zum Testen.

Kann für den Umgang mit negativen Zahlen angepasst werden, indem das negative Vorzeichen am Anfang umgedreht und am Ende wiederhergestellt wird.

Das obige ist der detaillierte Inhalt vonWie drucke ich eine Nummer aus, die sich von der vorherigen Nummer unterscheidet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen