C++ LeetCode简单程序:罗马数字转整数
写在最前
无法掩饰算法写出来并且程序调试成功的喜悦感,并且会享受想方法和调试的过程。下面这个程序很简单,不过还是想要记录一下,因为当你不知道如何实现的时候,就是困难的。
题目描述
罗马数字包含以下七种字符: 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简单程序:罗马数字转整数相关推荐
- Leetcode 简单四 罗马数字转整数
罗马数字转整数: PHP 76ms: 核心思想为哈希表操作.PHP的具体表现为关联数组.把基本数据和6大特殊数据类型何其对应的数据设为关联数组,判断是否存在并累加即可.时间复杂度O(n),空间复杂度为 ...
- java输出罗马数字,【Java】【刷穿 LeetCode】13. 罗马数字转整数(简单)
首页 专栏 java 文章详情 0 [刷穿 LeetCode]13. 罗马数字转整数(简单) 宫水三叶发布于 今天 14:14 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 ...
- 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 ...
- 罗马数字 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 ...
- 20190913:(leetcode习题)罗马数字转整数
罗马数字转整数 题目 大致思路 代码实现 题目 大致思路 跟上题一样,不需要思路,直接把各种情况列出来即可. 代码实现 package com.immunize.leetcode.romanTOINT ...
- 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 ...
- leetcode学习记录-罗马数字转整数
题目 13.罗马数字转整数 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, ...
- 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 ...
- 刻意练习:LeetCode实战 -- Task13. 罗马数字转整数
背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...
最新文章
- 汉字验证码和算式验证码
- TCP和UDP传输特点
- java jsp setAttribute setParameter 区别
- js中null和undefined的区别
- Go 语言学习总结(5)—— Go 学习笔记总结
- 《Approximation Capabilities of Multilayer Feedforward Networks》的学习笔记
- paramiko学习笔记
- UVA12279 LA4853 Emoogle Balance【水题】
- python 中定义的函数 如何在main中调用_在python中,在定义类时自动运行函数的方法?_class_酷徒编程知识库...
- mcu,单片机选型以及厂家推荐
- 掌上飞车-艳云脚本云控系统
- Shell脚本中:#!/bin/bash和#!/bin/sh是什么意思以及区别?
- 人形机器人视觉处理——走迷宫
- 一张我为写植物大战僵尸外.挂而画的草稿图...
- 炉石传说游戏系统拆解
- 0910---scipy.signal.argrelextrema 计算多维数组局部极值问题
- 三角网导线平差实例_三角网近似平差及边长计算表
- 4-hive 表概念
- 通过公众号迁移快速开通留言功能方法
- postgresql 官网学习文档