您的位置:首页 > 其它

LeetCode: Integer to Roman

2013-05-17 14:44 507 查看
这题因为不知道罗马数是怎么一回事。。就去网上找了答案

class Solution {
public:
string intToRoman(int num) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
char symbol[7] = {'I', 'V', 'X', 'L', 'C', 'D', 'M'};
int scale = 1000;
string ret;
for (int i = 6; i >= 0; i -= 2) {
int digit = num / scale;
if (digit != 0) {
if (digit <= 3) ret = ret + string(digit, symbol[i]);
else if (digit == 4) ret = ret + symbol[i] + symbol[i+1];
else if (digit == 5) ret = ret + symbol[i+1];
else if (digit <= 8) ret = ret + symbol[i+1] + string(digit-5, symbol[i]);
else if (digit == 9) ret = ret + symbol[i] + symbol[i+2];
}
num %= scale;
scale /= 10;
}
return ret;
}
};


C#

public class Solution {
public string IntToRoman(int num) {
char[] sym = new char[7]{'I', 'V', 'X', 'L', 'C', 'D', 'M'};
int scale = 1000;
string ans = "";
for (int i = 6; i >= 0; i-=2) {
int digit = num / scale;
if (digit != 0) {
if (digit <= 3) ans  = ans + new string(sym[i], digit);
else if (digit == 4) ans = ans + sym[i] + sym[i+1];
else if (digit == 5) ans = ans + sym[i+1];
else if (digit <= 8) ans = ans + sym[i+1] + new string(sym[i], digit-5);
else if (digit == 9) ans = ans + sym[i] + sym[i+2];
}
num %= scale;
scale /= 10;
}
return ans;
}
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: