您的位置:首页 > 其它

"Roman to Integer" and "Integer to Roman"

2016-06-30 10:03 190 查看
罗马计数法规律太多太麻烦,窝选择背代码_(:зゝ∠)_

int RomanToInt(string s) {
map<char, int> mp;

mp['I'] = 1;
mp['V'] = 5;
mp['X'] = 10;
mp['L'] = 50;
mp['C'] = 100;
mp['D'] = 500;
mp['M'] = 1000;

if (s.length() < 1) return 0;
int result = 0;
int sub = mp[s.at(0)];
int lastv = sub;

for (int i = 1; i < s.length(); ++i)
{
char curc = s.at(i);
int curv = mp[curc];

if (curv == lastv)
sub += curv;
else if (curv < lastv)
{
result += sub;
sub = curv;
}
else
{
sub = curv - sub;
}

lastv = curv;
}
result += sub;
return result;
}

string IntToRoman(int num)
{
int val[] = { 1000,900,500,400,100,90,50,40,10,9,5,4,1 };
string r[] = { "M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I" };

int cnt = 0;
string s = "";
while (num>0)
{
while (num >= val[cnt])
{
s += r[cnt];
num -= val[cnt];
}
cnt++;
}
return s;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: