Terbalikkan Integer Tanpa Tatasusunan dalam Java
Pertanyaan anda berkenaan dengan membalikkan integer tanpa menggunakan tatasusunan atau rentetan. Anda menghadapi kesukaran untuk memahami rasional di sebalik coretan kod berikut:
while (input != 0) { reversedNum = reversedNum * 10 + input % 10; input = input / 10; }
Prinsip Pembalikan Integer
Untuk memahami logik di sebalik algoritma ini, pertimbangkan konsep berikut:
Pseudokod
Algoritma pembalikan mengikut langkah berikut:
Kod Kerja
Berikut ialah versi terkini bagi kod yang disediakan yang menampung integer input yang besar dan mengendalikan kemungkinan limpahan:
<code class="java">public int reverseInt(int input) { long reversedNum = 0; long input_long = input; while (input_long != 0) { reversedNum = reversedNum * 10 + input_long % 10; input_long = input_long / 10; } if (reversedNum > Integer.MAX_VALUE || reversedNum < Integer.MIN_VALUE) { throw new IllegalArgumentException(); } return (int) reversedNum; }
Terbalikkan Nombor Ganjil Sahaja
Untuk membalikkan hanya digit ganjil dalam integer, anda boleh melaksanakan algoritma yang sama tetapi tambahkan pernyataan bersyarat untuk melangkau digit genap. Contohnya:
public int reverseOddDigits(int input) { long reversedNum = 0; long input_long = input; while (input_long != 0) { if (input_long % 2 == 1) { reversedNum = reversedNum * 10 + input_long % 10; } input_long = input_long / 10; } if (reversedNum > Integer.MAX_VALUE || reversedNum < Integer.MIN_VALUE) { throw new IllegalArgumentException(); } return (int) reversedNum; }</code>
Dengan kod yang diubah suai ini, anda kini boleh terbalik secara selektif digit ganjil dalam integer input anda.
Atas ialah kandungan terperinci Bagaimanakah kod Java yang disediakan membalikkan integer tanpa menggunakan tatasusunan atau rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!