數值轉大寫

兩年前有陣子上Leetcode試玩了一下。 其中有一題Integer to Roman

沒想到兩年多了還是維持在最快(3ms, 再快真的不容易)


程式碼如下:
  1. class Solution {
  2. public String intToRoman(int num) {
  3. int[] nums = new int[]{1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4};
  4. String[] rns = new String[]{"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV"};
  5. StringBuilder sb = new StringBuilder();
  6. int pos = 0;
  7. while (num > 3 && pos < rns.length) {
  8. int d = num / nums[pos];
  9. int r = num % nums[pos];
  10. if (d > 0) {
  11. for (int i = 0; i < d; i++) {
  12. sb.append(rns[pos]);
  13. }
  14. } else {
  15. pos++;
  16. }
  17. num = r;
  18. }
  19. while (num-- > 0) {
  20. sb.append('I');
  21. }
  22. return sb.toString();
  23.  
  24. }
  25. }

不過這對於我們用中文的來說,比較實用的還是轉國字大寫

留言

這個網誌中的熱門文章

企業人員的統一管理-FreeIPA學習筆記

證交所最佳五檔的程式解析

Postgresql HA