网站首页 > 知识剖析 正文
题目介绍如下:
七个不同的符号代表罗马数字,其值如下:
符号 | 值 |
I | 1 |
V | 5 |
X | 10 |
L | 50 |
C | 100 |
D | 500 |
M | 1000 |
示例 1:
输入:num = 3749
输出: "MMMDCCXLIX"
解释:
3000 = MMM 由于 1000 (M) + 1000 (M) + 1000 (M)
700 = DCC 由于 500 (D) + 100 (C) + 100 (C)
40 = XL 由于 50 (L) 减 10 (X)
9 = IX 由于 10 (X) 减 1 (I)
注意:49 不是 50 (L) 减 1 (I) 因为转换是基于小数位
示例 2:
输入:num = 58
输出:"LVIII"
解释:
50 = L
8 = VIII
示例 3:
输入:num = 1994
输出:"MCMXCIV"
解释:
1000 = M
900 = CM
90 = XC
4 = IV
我的实现算法完整代码如下
package main
import (
"fmt"
"strings"
"testing"
)
// 定义整数到罗马数字的映射表和对应的值
var intToRomanMap = []struct {
value int
symbol string
}{
{1000, "M"},
{900, "CM"},
{500, "D"},
{400, "CD"},
{100, "C"},
{90, "XC"},
{50, "L"},
{40, "XL"},
{10, "X"},
{9, "IX"},
{5, "V"},
{4, "IV"},
{1, "I"},
}
func intToRoman(num int) string {
var result strings.Builder
// 从映射表中找到对应的罗马数字符号,并追加到结果中
for _, pair := range intToRomanMap {
for num >= pair.value {
result.WriteString(pair.symbol)
num -= pair.value
}
fmt.Println("num => ", num, result.String())
}
return result.String()
}
func TestInt2Lm(t *testing.T) {
// 测试用例
nums := []int{3749, 58}
for _, num := range nums {
fmt.Printf("整数 %d 转换为罗马数字是 %s\n", num, intToRoman(num))
}
}
- 上一篇: 不规则数字的提取(提取指定长度的数字)
- 下一篇: 表格技巧—如何从Excel的字符串里提取日期
猜你喜欢
- 2025-01-06 字符串:golang实现罗马数字转整数算法
- 2025-01-06 表格技巧—如何从Excel的字符串里提取日期
- 2025-01-06 不规则数字的提取(提取指定长度的数字)
- 2025-01-06 VBA提取字符串中的数字,这么做就是简单
- 2025-01-06 EXCEL数字在字符串中间怎么提取?
- 2025-01-06 ABB机器人RAPID字符串整体直接转数组
- 2025-01-06 Qt 从QString中提取出数字
- 2025-01-06 (每天一道C语言)||统计字符串中的数字字符并作为整数输出
- 2025-01-06 前端 JavaScript 字符串中提取数字
- 2025-01-06 Excel教程:函数公式提取字符串中的数字和字母
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)