Re: [閒聊] 每日LeetCode已回收

看板Marginalman作者 (みけねこ的鼻屎)時間3年前 (2022/10/20 09:21), 3年前編輯推噓3(300)
留言3則, 3人參與, 3年前最新討論串55/719 (看更多)
12. Integer to Roman 給予一個1到3999之間的整數,將這個整數轉成羅馬符號表示法,羅馬數字是以拼接的方 方式表示,例如: I = 1 II = 2 III = 3 但是遇到四個連續符號時會經過轉換,例如: IIII != 4 要改成大數在右,而小數在左: IX = 5-1 = 4 (從左邊讀到右邊時,如果有小數在左表示是右數減左數) X = 5 XI = 6 XII = 7 XIII = 8 IX = 9 X = 10 ..... 所以會變成一個{1, 4, 5, 9, 10 ,40, ...} 的循環 Example: Input: num = 58 Output: "LVIII" Explanation: L = 50, V = 5, III = 3. 思路: 1.建立一個所有羅馬數字表示的表。 I 1 IV 4 V 5 XI 9 X 10 XL 40 L 50 XC 90 C 100 CD 400 D 500 CM 900 M 1000 2.從數字大到小,如果可以用大數表示就把特定字串append,並減去該數字,直到不 能用大數表示時再去找小的,直到數字用完為止。 JavaCode: class Solution { public static String intToRoman(int num){ StringBuilder result = new StringBuilder(); String[] roman = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"}; int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 }; int i = 0; while (num > 0) { while ( num >= values[i]) { num -= values[i]; result.append(roman[i]); } i++; } return result.toString(); } } 羅馬爹壓嚕 -- https://i.imgur.com/He2OJUh.jpg
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.19.35 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1666228869.A.0ED.html ※ 編輯: Rushia (36.231.19.35 臺灣), 10/20/2022 09:21:46

10/20 09:22, 3年前 , 1F
大師
10/20 09:22, 1F

10/20 09:41, 3年前 , 2F
大師
10/20 09:41, 2F

10/20 14:58, 3年前 , 3F
大師
10/20 14:58, 3F
文章代碼(AID): #1ZKAA53j (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1ZKAA53j (Marginalman)