罗马数字转整数
题目:罗马数字对应阿拉伯数字
字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
罗马数字的规则都是,大的在小的左边,如 12 XII 15 XV ;
特殊情况是,小的在大的左边,如 4,9,40,90......,如 4 IV,9 IX,40 XL
解题思路:
1.按照顺序,总是左边比右边大,n<n+1,那么可以相加;出现左边比右边小,则相减;
string s="IV"; Dictionary<Char,int> keys=new Dictionary<Char,int>(){ {'I',1},{'V',5},{'X',10},{'L',50},{'C',100},{'D',500},{'M',1000} }; int value=0; for(i=0;i<s.Length;i++) { if(i<s.Length-1&&keys[s[i+1]]>keys[s[i]]) { value-=keys[s[i]] } else { value+=keys[s[i]] } } return value;
关键点:循环,指针