【经典算法】LeetCode 12: 整数转罗马数字(Java/C/Python3/Go实现含注释说明,Easy)
题目:将整数转换为罗马数字
解法:
我们可以通过一个映射表来定义每个罗马数字和其对应的整数值,然后依次进行转换。
Java 实现:
class Solution {
public String intToRoman(int num) {
int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
String[] numerals = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
StringBuilder roman = new StringBuilder();
for (int i = 0; i < values.length; i++) {
while (num >= values[i]) {
num -= values[i];
roman.append(numerals[i]);
}
}
return roman.toString();
}
}
C 实现:
#include <stdio.h>
char* intToRoman(int num) {
int values[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
char* numerals[] = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
char buffer[16];
char* roman = buffer;
int i;
for (i = 0; i < sizeof(values) / sizeof(values[0]); i++) {
while (num >= values[i]) {
num -= values[i];
strcat(roman, numerals[i]);
}
}
return strdup(roman); // 返回一个动态分配的新字符串的副本
}
int main() {
int num = 3940;
printf("Roman representation: %s\n", intToRoman(num));
return 0;
}
Python3 实现:
class Solution:
def intToRoman(self, num: int) -> str:
values = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
numerals = ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"]
roman = ""
for i in range(len(values)):
while num >= values[i]:
num -= values[i]
roman += numerals[i]
return roman
# 使用示例
num = 3940
solution = Solution()
print("Roman representation:", solution.intToRoman(num))
Go 实现:
package main
import "fmt"
func intToRoman(num int) string {
values := []int{1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}
numerals := []string{"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"}
var roman string
for i, v := range values {
for num >= v {
num -= v
roman += numerals[i]
}
}
return roman
}
func main() {
num := 3940
fmt.Println("R
评论已关闭