iT邦幫忙

2025 iThome 鐵人賽

DAY 6
0
佛心分享-IT 人自學之術

從Leetcode到實務的橋樑系列 第 21

Day21(12. Integer to Roman)

  • 分享至 

  • xImage
  •  

題目介紹:
題目是要求將一個給定的整數轉換為羅馬數字。輸入範圍限制在 1到3999之間,因為羅馬數字傳統上不表示超過此範圍的數字。題目核心在於理解羅馬數字的表示規則,例如 I, V, X, L, C, D, M 及其組合方式,並處理像 4 (IV)、9 (IX)、40 (XL)、90 (XC) 等特殊情況。演算法需有效地將數字分解並映射至對應的符號。
解題流程:
先建立數值與羅馬數字對照表,從最大值開始貪婪匹配,不斷減去數值並拼接對應符號,直到整數歸零,最後輸出完整羅馬數字字串。
程式碼及執行結果截圖:
https://ithelp.ithome.com.tw/upload/images/20251003/201688710KkyMNaJOv.png
學習心得:
我對羅馬數字的規則有了更清楚的理解。這題看似單純的數字轉換,其實隱藏著規則設計的邏輯思考,例如羅馬數字有基本符號(I, V, X, L, C, D, M)以及特殊組合(IV, IX, XL, XC, CD, CM)。一開始我容易忽略這些特殊情況,導致結果錯誤。但透過建立數值與符號的對照表,再用貪婪演算法逐步減去數值並拼接符號,就能有效解決問題。這題讓我體會到在解題時,先將複雜規則整理成系統化的表格或對應關係,可以大幅降低實作難度。同時也讓我學到程式設計不僅是邏輯運算,還需要將問題轉化為結構化的步驟。
延伸邏輯時事面:
1.貨幣與編碼轉換:就像數字轉羅馬字一樣,現代金融系統也常需要不同單位或編碼之間的轉換,例如匯率計算或數字格式化。

2.資料表示標準化:在醫療、交通或政府資料中,常需將資訊轉換為標準代碼(如 ICD-10 疾病分類),這與數字轉換羅馬數字的思維相似。

3.文化與教育價值:羅馬數字在鐘錶、書籍章節、奧運會屆數等仍被廣泛使用,學習這題有助於理解數字表示方式在文化與時事上的延續性。


上一篇
Day20(33.Search in Rotated Sorted Array)
系列文
從Leetcode到實務的橋樑21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言