h**o 发帖数: 548 | 1 intToRoman(4)在自己机上得 VI. 但在leetcode上得IIII,expect VI. 所以leetcode没
过。
你们有类似问题吗?一下是我的程序:
另:你们都懂罗马数字吗? 我不懂,所以是看提示才知道大概怎么做。
string intToRoman(int num) {
unordered_map m;
m["M"] = 1000;
m["CM"] = 900;
m["D"] = 500;
m["CD"] = 400;
m["C"] = 100;
m["XC"] = 90;
m["L"] = 50;
m["XL"] = 40;
m["X"] = 10;
m["IX"] = 9;
m["V"] = 5;
m["IV"] = 4;
m["I"] = 1;
vector> v(m.begin(), m.end());
string str;
int k, div;
int size = v.size();
for (int i = 0; i < size && num>0; i++){
div = num / v[i].second;
for (k = 0; k < div; k++){
str+=v[i].first;
}
num -= div * v[i].second;
}
return str;
} | s*******y 发帖数: 12 | 2 LZ的代码有点奇怪, 既然是从integer map到罗马数字, 怎么定义了一个从罗马数字到
integer的map
感觉定义个, 十, 百, 千的一个数组就够了, 然后解释给定数值的个位, 十位, 百位,
千位, 直接map, 然后链接字符串就好了.
【在 h**o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : intToRoman(4)在自己机上得 VI. 但在leetcode上得IIII,expect VI. 所以leetcode没 : 过。 : 你们有类似问题吗?一下是我的程序: : 另:你们都懂罗马数字吗? 我不懂,所以是看提示才知道大概怎么做。 : string intToRoman(int num) { : unordered_map m; : m["M"] = 1000; : m["CM"] = 900; : m["D"] = 500; : m["CD"] = 400;
| h**o 发帖数: 548 | 3 那个unordered_map 是从roman to integer 拷的, 因为懒得再敲一遍,
目的就是得到 roman 和 int 的配对。和你建议的是一个意思。 我把 v 改写成这样好
了:
vector> v;
v.push_back(make_pair("M",1000));
v.push_back(make_pair("CM",900));
v.push_back(make_pair("D",500));
v.push_back(make_pair("CD",400));
v.push_back(make_pair("C",100));
v.push_back(make_pair("XC",90));
v.push_back(make_pair("L",50));
v.push_back(make_pair("XL",40));
v.push_back(make_pair("X",10));
v.push_back(make_pair("IX",9));
v.push_back(make_pair("V",5));
v.push_back(make_pair("IV",4));
v.push_back(make_pair("I",1));
,
【在 s*******y 的大作中提到】![](/moin_static193/solenoid/img/up.png) : LZ的代码有点奇怪, 既然是从integer map到罗马数字, 怎么定义了一个从罗马数字到 : integer的map : 感觉定义个, 十, 百, 千的一个数组就够了, 然后解释给定数值的个位, 十位, 百位, : 千位, 直接map, 然后链接字符串就好了.
|
|