Roman to Integer leetcode

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.

Subscribe to see which companies asked this question

Ⅰ(1)Ⅴ(5)Ⅹ(10)L(50)C(100)D(500)M(1000)

规则:位于大数的后面时就作为加数;位于大数的前面就作为减数

如:Ⅲ=3,Ⅳ=4,Ⅵ=6,ⅩⅨ=19,ⅩⅩ=20,ⅩLⅤ=45,MCMⅩⅩC=1980

从最低位开始,如果前面的数比它大,则让前面的数值加后面的数值,如果比它小,则让当前数值减去前面的数值

int romanToInt(string s) {
    if (s.length() == 0) return 0;
    int len = s.length();
    unordered_map<char, int> map;
    map.insert(make_pair(‘I‘, 1));
    map.insert(make_pair(‘V‘, 5));
    map.insert(make_pair(‘X‘, 10));
    map.insert(make_pair(‘L‘, 50));
    map.insert(make_pair(‘C‘, 100));
    map.insert(make_pair(‘D‘, 500));
    map.insert(make_pair(‘M‘, 1000));
    int result = map.at(s.at(len - 1));
    int pivot = result;
    for (int i = len - 2; i >= 0; i--) {
        int curr = map.at(s.at(i));
        if (curr >= pivot) {
            result += curr;
        }
        else {
            result -= curr;
        }
        pivot = curr;
    }
    return result;
}
时间: 2024-10-14 18:24:22

Roman to Integer leetcode的相关文章

Roman to Integer [LeetCode 13]

1- 问题描述 Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 2- 罗马数字[1] 罗马数字共有7个,即I(1).V(5).X(10).L(50).C(100).D(500)和M(1000).按照下述的规则可以表示任意正整数.需要注意的是罗马数字中没有“0”,与进位制无关.一般认为罗马数字只用来记数,而不作演算. 重复数次:一个

Roman To Integer leetcode java

问题描述: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 算法: /** * 输入一个罗马数字,返回它的整型表示 * @author admin * 转换规则:从右向左依次转换 * 1 相同数字连写,相加 ;2 小数字在大数字右边,相加;3 小数字在大数字左边,大的减去小的 */ //将罗马数字转换为整型值 public sta

13. Roman to Integer Leetcode Python

Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 这题的做法和前面一体interger to roman 类似 建一个dictionary 去查询. 1.先把string 反转 2. 用一个last去保存上一次的digit 3.如果上次的digit 大于现在的digit 就将值减去两倍的digit 否则 相加. 例如iv 反转过来是

LeetCode 013 Roman to Integer

[题目] Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. [题意] 把罗马数转换为整数 [思路] 罗马数字中只使用如下七个基值字母:M,D,C,L,X,V,I,分别用来表示1000.500.100.50.10.5.1. 大体思路是每个罗马字母对应的值相加即可, 但需要处理900, 400, 90, 40, 9, 4这几个特殊值(左

LeetCode之Integer to Roman, Roman to Integer

罗马数字以前只接触过I到VIII,第一次听说罗马数字也可以表示大于8的数字.阿拉伯数字和罗马数字之间的转换最重的是了解罗马数字的规则.Wiki了一把,又参考了其它的文档,总结如下: 罗马数字规则: 1, 罗马数字共有7个,即I(1).V(5).X(10).L(50).C(100).D(500)和M(1000). 罗马数字中没有"0". 2, 重复次数:一个罗马数字最多重复3次. 3, 右加左减: 在较大的罗马数字的右边记上较小的罗马数字,表示大数字加小数字. 在较大的罗马数字的左边记上

[LeetCode][Python]Roman to Integer

# -*- coding: utf8 -*-'''__author__ = '[email protected]'https://oj.leetcode.com/problems/roman-to-integer/Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999.===Comments by Daba

[LeetCode][JavaScript]Roman to Integer

Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. https://leetcode.com/problems/roman-to-integer/ 罗马数字转阿拉伯数字. 从后往前扫,如果当前的数大于之前的数,加上这个数,反之减去当前的数. 1 /** 2 * @param {string} s 3

【leetcode刷题笔记】Roman to Integer

Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 题解:转换的方法:从左往右扫描罗马字符,如果当前的字符对应的数字比上一个数字小,就直接加上这个数字:否则加上这个数字并且减去上一个数字的两倍,然后更新上一个数字.利用一个HashMap存放罗马字符和数字的对应. 罗马数字和阿拉伯数字的对应表格参见http://www.cnblogs.

LeetCode——Roman to Integer

Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 给定一个罗马数字,把它转换成一个整数. 把罗马数字字符串转换成字符数组先,如下表,每个数字仅对应一个字符,而且字符不一样.故可从头开始取值进行对应. The Roman Symbols The Romans used a special method of showing numbe