Bagaimana untuk mencetak nombor yang berbeza daripada nombor sebelumnya?

WBOY
Lepaskan: 2024-02-06 09:51:09
ke hadapan
967 orang telah melayarinya

Bagaimana untuk mencetak nombor yang berbeza daripada nombor sebelumnya?

Kandungan soalan

Sebagai contoh, jika saya mempunyai nombor 35565, outputnya ialah 3565.

Jadi, coretan kod saya mendapat satu digit tetapi saya tidak tahu cara mengekalkan nombor sebelumnya untuk menyemak dengan nombor seterusnya.

for {
num = num / 10
fmt.Print(num)
        
if num/10 == 0 {
    break
}
}
Salin selepas log masuk


Jawapan betul


Kaedah ini memecahkan nombor kepada nombor dari kanan ke kiri, menyimpannya sebagai kepingan integer, dan kemudian melelang nombor dari kiri ke kanan untuk membina nombor dengan digit "unik berturut-turut".

Saya pada mulanya cuba memfaktorkan nombor dari kiri ke kanan, tetapi tidak tahu cara mengendalikan sifar pemegang tempat itu dari kanan ke kiri, saya tahu cara menangkap sifar tersebut;

// 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
}
Salin selepas log masuk

Ini adalah pergi taman permainan untuk ujian.

Boleh disesuaikan untuk mengendalikan nombor negatif dengan membalikkan tanda negatif pada permulaan dan memulihkannya pada akhir.

Atas ialah kandungan terperinci Bagaimana untuk mencetak nombor yang berbeza daripada nombor sebelumnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!