solution.cpp 540 字节
Newer Older
每日一练社区's avatar
每日一练社区 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
struct rmap
{
	char *r;
	int v;
	int l;
} units[] = {
	{"M", 1000, 1},
	{"CM", 900, 2},
	{"D", 500, 1},
	{"CD", 400, 2},
	{"C", 100, 1},
	{"XC", 90, 2},
	{"L", 50, 1},
	{"XL", 40, 2},
	{"X", 10, 1},
	{"IX", 9, 2},
	{"V", 5, 1},
	{"IV", 4, 2},
	{"I", 1, 1}};
#include <string.h>
int romanToInt(char *s)
{
	int len = strlen(s);
	char *end = s + len;
	int i = 0;
	int r = 0;
	while (i < 13)
	{
		if (end - s >= units[i].l && memcmp(s, units[i].r, units[i].l) == 0)
		{
			r += units[i].v;
			s += units[i].l;
		}
		else
			i++;
	}
	return r;
}