快捷搜索:  汽车  科技

数字转成罗马数字(整数转罗马数字)

数字转成罗马数字(整数转罗马数字)} { "" "M" "MM" "MMM" }//1000-3000的整千数 { "" "I" "II" "III" "IV" "V" "VI" "VII" "VIII" "IX" } //1-9 { "" "X" "XX" "XXX" "XL" "L" "LX" "LXX" "LXXX" "XC" } //10-90的整十数 { "" "C&#

2021-09-13:整数转罗马数字。

福大大 答案2021-09-13:

构造一张罗马数字的二维表。

{

{ "" "I" "II" "III" "IV" "V" "VI" "VII" "VIII" "IX" } //1-9

{ "" "X" "XX" "XXX" "XL" "L" "LX" "LXX" "LXXX" "XC" } //10-90的整十数

{ "" "C" "CC" "CCC" "CD" "D" "DC" "DCC" "DCCC" "CM" } //100-900的整百数

{ "" "M" "MM" "MMM" }//1000-3000的整千数

}

根据二维表,将整数从左往右,直接替换就行。0是虚无,所以二维表里,0对应的罗马数字是空。

时间复杂度:数字不会太大,近似认为是O(1)。

时间复杂度:数字不会太大,近似认为是O(1)。

代码用golang编写。代码如下:

package main import "fmt" func main() { num := 123 ret := intToRoman(num) fmt.Println(ret) } func intToRoman(num int) string { c := [][]string{ {"" "I" "II" "III" "IV" "V" "VI" "VII" "VIII" "IX"} {"" "X" "XX" "XXX" "XL" "L" "LX" "LXX" "LXXX" "XC"} {"" "C" "CC" "CCC" "CD" "D" "DC" "DCC" "DCCC" "CM"} {"" "M" "MM" "MMM"}} roman := make([]byte 0) roman = append(roman []byte(c[3][num/1000])...) roman = append(roman []byte(c[2][num/100])...) roman = append(roman []byte(c[1][num/10])...) roman = append(roman []byte(c[0][num])...) return string(roman) }

执行结果如下:

数字转成罗马数字(整数转罗马数字)(1)

***

[左神java代码](https://github.com/algorithmzuo/coding-for-great-offer/blob/main/src/class28/Problem_0012_IntegerToRoman.java)

猜您喜欢: