Rumah > pembangunan bahagian belakang > C++ > Bagaimana dengan Cekap Menukar Integer kepada Tatasusunan Digitnya dalam C#?

Bagaimana dengan Cekap Menukar Integer kepada Tatasusunan Digitnya dalam C#?

Patricia Arquette
Lepaskan: 2025-01-12 16:27:44
asal
751 orang telah melayarinya

How to Efficiently Convert an Integer to an Array of its Digits in C#?

Kaedah tatasusunan integer kepada numerik yang cekap dalam C#

Dalam pengaturcaraan, selalunya perlu untuk mengekstrak nombor individu daripada integer. Terdapat cara yang lebih mudah dan cekap untuk melakukan ini daripada menukar nombor kepada rentetan dan kemudian menghuraikannya aksara demi aksara kepada integer.

Sebagai contoh, katakan terdapat pembolehubah integer i dengan nilai 987654321. Tugasnya adalah untuk mencipta tatasusunan integer is yang mewakili setiap digit nombor, menghasilkan [9, 8, 7, 6, 5, 4, 3, 2, 1].

Penyelesaian rekursif berasaskan tindanan:

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

    var numbers = NumbersIn(value / 10);

    numbers.Push(value % 10);

    return numbers;
}</code>
Salin selepas log masuk

Penyelesaian ini menggunakan rekursi untuk memecahkan nombor kepada digit individu. Ia terus membahagikan nombor dengan 10 dan menolak baki (digit terakhir) ke dalam timbunan. Sebaik sahaja nombor itu mencapai 0, rekursi berhenti, meninggalkan timbunan yang mengandungi nombor asal.

Penyelesaian bukan rekursif menggunakan tindanan:

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

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

    return numbers.ToArray();
}</code>
Salin selepas log masuk

Pendekatan ini mengelakkan pengulangan dan menggunakan timbunan untuk tujuan yang sama. Ia secara berulang membahagikan nombor dengan 10 dan menolak bakinya ke dalam timbunan sehingga nombor itu mencapai 0. Akhir sekali, kandungan timbunan ditukar kepada tatasusunan integer.

Penyelesaian bukan rekursif berasaskan tatasusunan:

<code class="language-csharp">private static int[] NumbersIn(int value)
{
    // 0 的对数无法计算,所以直接返回。
    if (value == 0) return new int[] { 0 };

    value = Math.Abs(value);
    var digits = 1 + (int)Math.Log10(value);
    var buffer = new int[digits];
    for (var counter = digits - 1; counter >= 0; counter--)
    {
        buffer[counter] = value % 10;
        value /= 10;
    }
    return buffer;
}</code>
Salin selepas log masuk

Penyelesaian ini beroperasi secara langsung pada tatasusunan untuk menyimpan digit nombor. Ia secara berulang mengira nombor, memperuntukkan tatasusunan, dan menyimpan setiap nombor di lokasi yang betul. Kaedah ini menyediakan cara langsung dan cekap untuk mengekstrak nombor individu daripada integer.

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

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan