整数转罗马数字 ( leetcode)

题目:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

字符          数值
I             1
V             5
X             10
L             50
C             100
D             500
M             1000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/integer-to-roman;

结题思路:除了以上七种字符还存在 IV (4), IX(9),XL (40),XC(90),CD(400),CM(900)这六个特殊数值的存在

此题思路就是从最大的数开始减知道减到为1

class Solution {
    public String intToRoman(int num) {
     String signs[] ={"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};
    StringBuffer s= new StringBuffer();
     for(int i=0;i<13;++i)
     {
         while(num>=values[i])
         {
           num-=values[i];
           s.append(signs[i]);
         }
     }
     return s.toString();
    }
}

而且用Stringbuffer的append();字符拼接效率更高
整数转罗马数字 ( leetcode)_第1张图片
对比String 直接拼接
整数转罗马数字 ( leetcode)_第2张图片

拓:常用的几个方法
整数转罗马数字 ( leetcode)_第3张图片

你可能感兴趣的:(leetcode,算法,职场和发展)