i***e 发帖数: 452 | 1 发现板上有很多版本, 都不是很简单, 自认为我的版本比较简单..呵呵!greedy 的思
想。
string intToRoman(int num) {
string table[] = {"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};
string result;
for(int iter = 0; iter < 13;)
{
if(num >= values[iter])
{
result += table[iter];
num -= values[iter];
}
else
++iter;
}
return result;
}
int romanToInt(string s) {
int result = 0;
map lookup;
lookup['I'] = 1; lookup['V'] = 5; lookup['X'] = 10; lookup['L'] = 50;
lookup['C'] = 100; lookup['D'] = 500; lookup['M'] = 1000;
for(int i = 0; i < s.size() -1; i++)
{
if(lookup[s[i]] < lookup[s[i+1]])
result -= lookup[s[i]];
else
result += lookup[s[i]];
}
result += lookup[s[s.size()-1]];
return result;
} | l****c 发帖数: 782 | | j*****o 发帖数: 394 | 3 这个好简洁~
IV"
【在 i***e 的大作中提到】 : 发现板上有很多版本, 都不是很简单, 自认为我的版本比较简单..呵呵!greedy 的思 : 想。 : string intToRoman(int num) { : string table[] = {"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}; : string result; : for(int iter = 0; iter < 13;) : { : if(num >= values[iter])
| a*******y 发帖数: 1040 | 4 没细看
不过抽了眼
lookup[s[i]] < lookup[s[i+1]],你这个很简单的会越界吧 | i***e 发帖数: 452 | 5 为啥会越界?
【在 a*******y 的大作中提到】 : 没细看 : 不过抽了眼 : lookup[s[i]] < lookup[s[i+1]],你这个很简单的会越界吧
| z****e 发帖数: 9 | |
|