大风车01

归来仍少年

罗马数字转整数

题目:罗马数字对应阿拉伯数字

字符 数值

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;

关键点:循环,指针

posted on 2022-10-29 11:13  大风车01  阅读(20)  评论(0编辑  收藏  举报

导航