写在最前
无法掩饰算法写出来并且程序调试成功的喜悦感,并且会享受想方法和调试的过程。下面这个程序很简单,不过还是想要记录一下,因为当你不知道如何实现的时候,就是困难的。

题目描述
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。

示例 1:
输入: “III”
输出: 3

示例 2:
输入: “IV”
输出: 4

示例 3:
输入: “IX”
输出: 9

示例 4:
输入: “LVIII”
输出: 58
解释: L = 50, V= 5, III = 3.

示例 5:
输入: “MCMXCIV”
输出: 1994
解释: M = 1000, CM = 900, XC = 90, IV = 4.

实现方法

#include<iostream>
#include<string>
using namespace std;class Solution {
public:int romanToInt(string s) {int sum = 0;for (int i = 0; i < s.size(); i++){if (s[i] == 'I' && s[i + 1] == 'V')     //判断六种特殊情况{sum += 4;i++;}else if (s[i] == 'I' && s[i + 1] == 'X'){sum += 9;i++;}       else if (s[i] == 'X' && s[i + 1] == 'L'){sum += 40;i++;}else if (s[i] == 'X' && s[i + 1] == 'C'){sum += 90;i++;}  else if (s[i] == 'C' && s[i + 1] == 'D'){sum += 400;i++;}  else if (s[i] == 'C' && s[i + 1] == 'M'){sum += 900;i++;}      else{switch (s[i])                  //正常顺序的处理{case 'I':sum += 1; break;case 'V':sum += 5; break;case 'X':sum += 10; break;case 'L':sum += 50; break;case 'C':sum += 100; break;case 'D':sum += 500; break;case 'M':sum += 1000; break;default:break;}}}return sum;}
};int main()
{Solution s;cout << "请输入一个罗马数字:";string roma;cin >> roma;cout << "罗马对应的整数位:" << s.romanToInt(roma) << endl;system("pause");return 0;
}

写在最后
说实话,做完这个题目后,才知道原来罗马数字详细的规则是这样的。基本常识,羞羞呀!

C++ LeetCode简单程序:罗马数字转整数相关推荐

  1. Leetcode 简单四 罗马数字转整数

    罗马数字转整数: PHP 76ms: 核心思想为哈希表操作.PHP的具体表现为关联数组.把基本数据和6大特殊数据类型何其对应的数据设为关联数组,判断是否存在并累加即可.时间复杂度O(n),空间复杂度为 ...

  2. java输出罗马数字,【Java】【刷穿 LeetCode】13. 罗马数字转整数(简单)

    首页 专栏 java 文章详情 0 [刷穿 LeetCode]13. 罗马数字转整数(简单) 宫水三叶发布于 今天 14:14 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 ...

  3. LeetCode(13.罗马数字转整数) JAVA Hashmap

    LeetCode(13.罗马数字转整数) JAVA Hashmap 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D ...

  4. 罗马数字 java_【leetcode刷题】[简单]13.罗马数字转整数(roman to integer)-java

    罗马数字转整数 roman to integer 题目 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M ...

  5. 20190913:(leetcode习题)罗马数字转整数

    罗马数字转整数 题目 大致思路 代码实现 题目 大致思路 跟上题一样,不需要思路,直接把各种情况列出来即可. 代码实现 package com.immunize.leetcode.romanTOINT ...

  6. leetcode系列--13.罗马数字转整数

    leetcode系列–第13题.罗马数字转整数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M.字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 ...

  7. leetcode学习记录-罗马数字转整数

    题目 13.罗马数字转整数 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, ...

  8. LeetCode题 - 13 罗马数字转整数

    罗马数字转整数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 I ...

  9. 刻意练习:LeetCode实战 -- Task13. 罗马数字转整数

    背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...

最新文章

  1. 汉字验证码和算式验证码
  2. TCP和UDP传输特点
  3. java jsp setAttribute setParameter 区别
  4. js中null和undefined的区别
  5. Go 语言学习总结(5)—— Go 学习笔记总结
  6. 《Approximation Capabilities of Multilayer Feedforward Networks》的学习笔记
  7. paramiko学习笔记
  8. UVA12279 LA4853 Emoogle Balance【水题】
  9. python 中定义的函数 如何在main中调用_在python中,在定义类时自动运行函数的方法?_class_酷徒编程知识库...
  10. mcu,单片机选型以及厂家推荐
  11. 掌上飞车-艳云脚本云控系统
  12. Shell脚本中:#!/bin/bash和#!/bin/sh是什么意思以及区别?
  13. 人形机器人视觉处理——走迷宫
  14. 一张我为写植物大战僵尸外.挂而画的草稿图...
  15. 炉石传说游戏系统拆解
  16. 0910---scipy.signal.argrelextrema 计算多维数组局部极值问题
  17. 三角网导线平差实例_三角网近似平差及边长计算表
  18. 4-hive 表概念
  19. 通过公众号迁移快速开通留言功能方法
  20. postgresql 官网学习文档

热门文章

  1. 为什么使用多级页表?
  2. 以NLP技术为核心,容联云对话式AI平台入选《2022中国对话式AI采购指南》
  3. 基于GEC6818的个人超市购物系统
  4. 2.12 FreeRTOS_RingBuff 环形缓存数组的使用
  5. ring buffer 环形队列 C++实现
  6. 2-1输入两个整数num1和num2,计算并输出他们的和、差、积、商与余数
  7. javaCV入门指南:序章
  8. Django 框架学习经验分享
  9. Deepin系统无法卸载360的解决方法
  10. Java3D与其他三维技术的比较