题目:罗马数字包含以下七种字符: 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();字符拼接效率更高
对比String 直接拼接
拓:常用的几个方法