Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menukar Integer dengan Cekap kepada Tatasusunan Digitnya?

Bagaimanakah Saya Boleh Menukar Integer dengan Cekap kepada Tatasusunan Digitnya?

Barbara Streisand
Barbara Streisandasal
2025-01-12 16:10:42238semak imbas

How Can I Efficiently Convert an Integer into an Array of its Digits?

Kaedah penukaran integer kepada tatasusunan berangka yang cekap

Menukar integer kepada susunan nombor satu digitnya ialah tugas biasa dalam pengaturcaraan. Walaupun pendekatan tradisional menggunakan penukaran rentetan dan lelaran adalah mudah, ia tidak cekap untuk bilangan yang besar. Berikut ialah beberapa kaedah penukaran yang cekap.

Kaedah rekursif

Salah satu cara ialah menggunakan rekursi untuk memecahkan integer kepada bahagian yang lebih kecil. Kod C# berikut menunjukkan pendekatan ini:

<code class="language-c#">public Stack<int> NumbersIn(int value)
{
    if (value == 0) return new Stack<int>();

    var numbers = NumbersIn(value / 10);

    numbers.Push(value % 10);

    return numbers;
}

var numbers = NumbersIn(987654321).ToArray();</code>

Kaedah tindanan bukan rekursif

Versi bukan rekursif menggunakan tindanan juga boleh dilaksanakan:

<code class="language-c#">public int[] NumbersIn(int value)
{
    var numbers = new Stack<int>();

    for (; value > 0; value /= 10)
        numbers.Push(value % 10);

    return numbers.ToArray();
}</code>

Kaedah tatasusunan langsung

Kaedah lain yang cekap ialah menggunakan operasi tatasusunan langsung:

<code class="language-c#">private static int[] NumbersIn(int value)
{
    if (value == 0)
    {
        return new[] { 0 }; // C# 12 集合表达式
    }
    value = Math.Abs(value);
    var digits = 1 + (int)Math.Log10(value);
    var buffer = new int[digits];
    for (var counter = 0; counter < digits; counter++)
    {
        buffer[counter] = value % 10;
        value /= 10;
    }
    Array.Reverse(buffer);
    return buffer;
}</code>

Kaedah cekap ini menyediakan cara yang pantas dan cekap memori untuk menukar integer kepada tatasusunan satu digit, menjadikannya alat yang berharga dalam pelbagai tugas pengaturcaraan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Integer dengan Cekap kepada Tatasusunan Digitnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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