c_cpp 给定罗马数字,将其转换为整数,反之亦然。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 给定罗马数字,将其转换为整数,反之亦然。相关的知识,希望对你有一定的参考价值。
// suppose 1 <= 'num' <= 3999
string integer_to_roman(int num) {
int base[] = {1,4,5,9,10,40,50,90,100,400,500,900,1000};
// I, V, X, L, C, D, M
// 1, 5, 10,50,100,500,1000
string symb[] = {"I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M"};
string res = "";
for(int i=12; i>=0; i--) {
while(num >= base[i]) {
num -= base[i]; // gist, continuously substract
res += symb[i];
}
}
return res;
}
int roman_to_integer(string s) {
int res = 0;
for(int i=0; i<s.size(); i++) {
if(i == 0) res += convert(s[i]);
else {
int cur = convert(s[i]), pre = convert(s[i-1]);
if(pre < cur) res += cur - pre - pre; // gist, substract twice the pre
else res += cur;
}
}
return res;
}
int convert(char c) {
switch(c) {
case 'I': return 1;
case 'V': return 5;
case 'X': return 10;
case 'L': return 50;
case 'C': return 100;
case 'D': return 500;
case 'M': return 1000;
default: return 0;
}
}
以上是关于c_cpp 给定罗马数字,将其转换为整数,反之亦然。的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C++ 中将数字转换为字符串,反之亦然
c_cpp [阵] 3sum最近。给定n个整数的数组S,在S中找到三个整数,使得总和最接近给定数字target。 Retur
给定一个整数数组,将这个数字和它后面的所有数字相加
数字电路基础
给定一个随机顺序的整数数组,您必须找到最小交换次数才能将其转换为循环排序数组
python 将给定的整数转换为罗马数字。