leetcode-13罗马字符转整数

leetcode-13罗马字符转整数

  算法:转换的规律是先逐字符按照对应的阿拉伯数字累加,然后对于特殊的(I、X、C出现在左侧)要处理。处理方法:出现特殊字符组合减去双倍的左侧字符(在开始的处理中已经加过一次,而实际的结果中却是要减去,那么就需要在加的基础上减去两倍)。

Code:

vertion : Java

 1 class Solution {
 2     public int romanToInt(String s) {
 3         int ans = 0;
 4         //处理特定字符
 5         if(s.indexOf("IV") != -1)
 6         {
 7             ans += -2;
 8         }
 9         if(s.indexOf("IX") != -1)
10         {
11             ans += -2;
12         }
13         if(s.indexOf("XL") != -1)
14         {
15             ans += -20;
16         }
17         if(s.indexOf("XC") != -1)
18         {
19             ans += -20;
20         }
21         if(s.indexOf("CD") != -1)
22         {
23             ans += -200;
24         }
25         if(s.indexOf("CM") != -1)
26         {
27             ans += -200;
28         }
29
30         //逐字符处理
31         for(int i=0; i<s.length(); i++)
32         {
33             char c = s.charAt(i);
34             switch(c)
35             {
36                 case ‘I‘:
37                     ans += 1;
38                 break;
39                 case ‘V‘:
40                     ans += 5;
41                 break;
42                 case ‘X‘:
43                     ans += 10;
44                 break;
45                 case ‘L‘:
46                     ans += 50;
47                 break;
48                 case ‘C‘:
49                     ans += 100;
50                 break;
51                 case ‘D‘:
52                     ans += 500;
53                 break;
54                 case ‘M‘:
55                     ans += 1000;
56                 break;
57             }
58         }
59         return ans;
60     }
61 }

原文地址:https://www.cnblogs.com/yocichen/p/10251073.html

时间: 2024-10-18 21:55:59

leetcode-13罗马字符转整数的相关文章

LeetCode 13、罗马数字转整数

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1.12 写做 XII ,即为 X + II . 27 写做  XXVII, 即为 XX + V + II . 通常情况下,罗马数字中小的数字在大的数字的右边.但也存在特例,例如 4 不写做 IIII,而是 IV.数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 .同样地,数字

【LeetCode 13】罗马数字转整数

题目链接 [题解] 就是上一题反过来的过程. 因为有说一般情况下后面的罗马数字是小于前面的罗马数字的. 如果前面的罗马数字小于后面的罗马数字了. 说明出现了4,9,40,90这些特殊情况. 那么就得判断一下下了. 直接用map<string,int>把所有的罗马数字对应的数字都放进去. 然后就很好做啦. 写的时候遇到一个问题. 就是string temp = 一个char类型+另外一个char类型变量. 会出错... 得这么写 string temp=""; temp+=c

[LeetCode][13]Roman to Integer解析 罗马字符转int类型关于栈的常数实现-Java实现

Q: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. A: 以下解法和代码没有借阅以往任何资料,如果有更好的解法请在评论区留言 看到这一题我真是感叹城会玩,昨天刚刚解过一个int转罗马字母,今天又反过来解.自叹弗如.这题的该意思就是给一个罗马字符,把他转化成一个int数字,范围在1-3999之间.关于罗马数字的详细信息就不复制了,

LeetCode Roman to Integer 罗马字符转数字 解题报告

https://oj.leetcode.com/problems/roman-to-integer/ Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 把一个给定的罗马字符转为数字.首先要了解罗马字符表示的规则. 一,羅馬數字共有7個,即I(1).V(5).X(10).L(50).C(100).D(500)和M(1000). 二,在

【LeetCode-面试算法经典-Java实现】【012-Integer to Roman(数字转罗马字符)】

[012-Integer to Roman(数字转罗马字符)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999. 题目大意 输入一个数字,将它转成一个罗马数字,输入的数字在[1, 3999]之间. 罗马数字的表示: 个位数举例: (I, 1) (II, 2)

[Swift]字符串根据索引获取指定字符,依据ASCII编码实现字符和整数的快速转换

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言. 它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646. 请注意,ASCII是American Standard Code for Information Interchange缩写,而不是ASCⅡ(罗马数字2),有很多人在这个地方产生误解. 在Swift中实现:字符串根据索

LeetCode (13) Pascal&#39;s Triangle (杨辉三角 )

题目描述 Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5, Return 从第三行开始,每行除了最左边和最右边两个数为1,其他数字都是上一行中相邻两个数字之和.根据上述规则可以写出下面的代码: class Solution { public: vector<vector<int> > generateRow1() { vector<in

Leetcode 12 Integer to Roman整数变罗马

题目: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999. 翻译: 给一个整数,把他转换为罗马数字输出. 这道题是简单的字符转换的问题.只要了解罗马数字代表的含义即可. 罗马数字里面只有 1,5,10.  1到3之间用重复的1表示,4用IV 90用XC 依次类推. I = 1; V = 5; X = 10; L = 50; C = 1

Leetcode#13. Roman to Integer(罗马数字转整数)

题目描述 罗马数字包含以下七种字符: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 得到的数