13. 罗马数字转整数

岁酱吖の 提交于 2020-02-04 12:43:56

2020-02-04

1.题目描述

根据一定的规则,将 罗马数字转整数

2.题解

直接进行判断即可,注意不要遗漏即可

3.代码

#include <iostream>
using namespace std;

class Solution {
	public:
		int romanToInt(string s) {
			int sum=0,l=s.length(),i=0;
			while (i<l) {
				switch(s[i]) {
					case 'I': {
						if (i+1<l) {
							if (s[i+1]=='V') {
								sum+=4;
								i++;
							} else if (s[i+1]=='X') {
								sum+=9;
								i++;
							} else {
								sum+=1;
							}
						}else sum+=1;
						break;
					}
					case 'V': {
						sum+=5;
						break;
					}
					case 'X': {
						if (i+1<l) {
							if (s[i+1]=='L') {
								sum+=40;
								i++;
							} else if (s[i+1]=='C') {
								sum+=90;
								i++;
							} else {
								sum+=10;
							}
						}else sum+=10;
						break;
					}
					case 'L': {
						sum+=50;
						break;
					}
					case 'C': {
						if (i+1<l) {
							if (s[i+1]=='D') {
								sum+=400;
								i++;
							} else if (s[i+1]=='M') {
								sum+=900;
								i++;
							} else {
								sum+=100;
							}
						}else sum+=100;
						break;
					}
					case 'D': {
						sum+=500;
						break;
					}
					case 'M': {
						sum+=1000;
						break;
					}
				}
				i++;
			}
			return sum;
		}
};

int main() {
	Solution s;
	cout<<s.romanToInt("III")<<endl;
	return 0;
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!