您的位置:首页 > 其它

12. Integer to Roman

2015-04-16 09:34 176 查看
题目:

Given an integer, convert it to a roman numeral.

Input is guaranteed to be within the range from 1 to 3999.

链接: http://leetcode.com/problems/integer-to-roman/

题解:

数值计算的题目,需要了解罗马数字的规律。 Time Complexity - O(n), Space Complexity - O(n)

public class Solution {
public String intToRoman(int num) {   //Roman:   I = 1,  V = 5,   X = 10,   L = 50,   C = 100,  D = 500,  M = 1000
StringBuilder result = new StringBuilder();
String [] symbol = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
int [] value = {1000,900,500,400, 100, 90,  50, 40,  10, 9,   5,  4,   1};
for(int i = 0; num != 0; i++){
while(num >= value[i]){
num -= value[i];
result.append(symbol[i]);
}
}
return result.toString();
}
}


二刷:

I, IV, V, IX, X, XL, L, XC, C, CD, D, CM, M分别代表 1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000

Java:

public class Solution {
private final String[] romans = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
private final int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};

public String intToRoman(int num) {
if (num <= 0) {
return "";
}
StringBuilder sb = new StringBuilder();
for (int i = 0; num > 0; i++) {
while (num >= values[i]) {
num -= values[i];
sb.append(romans[i]);
}
}
return sb.toString();
}
}


Python:

class Solution(object):
def intToRoman(self, num):
"""
:type num: int
:rtype: str
"""
romans = ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"]
numbers = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
res = ''
for i in range(0, len(romans)):
while num >= numbers[i]:
num -= numbers[i]
res += romans[i]
return res


三刷:

Java:

public class Solution {
public String intToRoman(int num) {
if (num <= 0) return "";
String[] romans = {"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};
StringBuilder sb = new StringBuilder();

for (int i = 0; num > 0; i++) {
while (num >= values[i]) {
num -= values[i];
sb.append(romans[i]);
}
}
return sb.toString();
}
}


Reference:
https://leetcode.com/discuss/49870/my-java-solution-easy-to-understand
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: