# 题目描述

I 1

V 5

X 10

L 50

C 100

D 500

M 1000

• I 可以放在 V (5) 和 X (10) 的左边，来表示 4 和 9。
• X 可以放在 L (50) 和 C (100) 的左边，来表示 40 和 90。
• C 可以放在 D (500) 和 M (1000) 的左边，来表示 400 和 900。

# 贪心解法

class Solution {

int[] val = new int[]{1000,900,500,400,100,90,50,40,10,9,5,4,1};

String[] str = new String[]{"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};

public String intToRoman(int x) {

StringBuilder sb = new StringBuilder();

for (int i = 0; i < val.length && x > 0; i++) {

int cv = val[i];

String cs = str[i];

while (x >= cv) {

sb.append(cs);

x -= cv;

}

}

return sb.toString();

}

}

1 声望

0 粉丝

0 条评论

# 题目描述

I 1

V 5

X 10

L 50

C 100

D 500

M 1000

• I 可以放在 V (5) 和 X (10) 的左边，来表示 4 和 9。
• X 可以放在 L (50) 和 C (100) 的左边，来表示 40 和 90。
• C 可以放在 D (500) 和 M (1000) 的左边，来表示 400 和 900。

# 贪心解法

class Solution {

int[] val = new int[]{1000,900,500,400,100,90,50,40,10,9,5,4,1};

String[] str = new String[]{"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};

public String intToRoman(int x) {

StringBuilder sb = new StringBuilder();

for (int i = 0; i < val.length && x > 0; i++) {

int cv = val[i];

String cs = str[i];

while (x >= cv) {

sb.append(cs);

x -= cv;

}

}

return sb.toString();

}

}