嗨,大家好,我是KevinLee,一位正在在轉職軟體工程師路上的遊戲技術美術。
為了能讓自己學習的過程更加深刻,決定開始在這邊記錄自己練習過的題目,方便未來學習更專精時,可以回頭審視自己所寫過的code,也請大家多多指教!
📅 2026/01/08
🏷️ C++、leetcode、while
✍️ KevinLee
🧩 Topic from "Zerojudge"
🎯 輸入任意數字,並將其數字全部倒轉
輸入說明: 輸入一行包含一個整數,且不超過2的31次方
輸出說明: 輸出翻轉過後的數字
補充說明: 前面有0的話應消除
範例輸入#1: 12345
範例輸出#1: 54321
/
範例輸入#2: 5050
範例輸入#2: 505
📜 邏輯紀錄
我認為這題的重點在於整數的逐位拆解與重新組合,雖然有想到用字串處理,但目前字串還沒有很熟悉,先用直覺想到的方式處理,未來熟悉字串後再回來補字串解法。
使用while迴圈依序從後面提取數字
1️⃣取出目前的個位數
num = 12345
num % 10 = 5
2️⃣將目前結果放到最前面
flipnum * 10 //為下一個數字預留空間
3️⃣依序剔除原數
num / 10
📝
當整數最後一位是0時,num % 10 會先取得 0,
但在後續flipnum * 10 + 0 的運算中,
這個0不會對最終結果造成影響,因此不會被保留下來。
#include<iostream>
using namespace std;
int main()
{
int num = 0;
int flipnum = 0;
cin >> num;
while (num > 0)
{
flipnum = flipnum * 10 + num % 10;
num = num / 10;
}
cout << flipnum << endl;
}