數值轉大寫
兩年前有陣子上Leetcode試玩了一下。 其中有一題Integer to Roman,
沒想到兩年多了還是維持在最快(3ms, 再快真的不容易)
程式碼如下:
class Solution { public String intToRoman(int num) { int[] nums = new int[]{1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4}; String[] rns = new String[]{"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV"}; StringBuilder sb = new StringBuilder(); int pos = 0; while (num > 3 && pos < rns.length) { int d = num / nums[pos]; int r = num % nums[pos]; if (d > 0) { for (int i = 0; i < d; i++) { sb.append(rns[pos]); } } else { pos++; } num = r; } while (num-- > 0) { sb.append('I'); } return sb.toString(); } }
不過這對於我們用中文的來說,比較實用的還是轉國字大寫
留言
張貼留言