整数转罗马数字 ( 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();字符拼接效率更高
在这里插入图片描述
对比String 直接拼接
在这里插入图片描述

拓:常用的几个方法
在这里插入图片描述

Guess you like

Origin blog.csdn.net/weixin_43889487/article/details/121050231