13. Roman to Integer ★
题目内容:
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
题目分析:罗马数字向阿拉伯数字的转换情况如下:
1、M=1000 D=500 C=100 L=50 X=10 V=5 I=1
2、若小的罗马符号出现在大的罗马符号的前面,则小的罗马符号代表的数字改为负。这种情况只能出现有限的情况。
因此目前想到两种方法。
第一种方法是再扫描出I之外的每个符号时都查看这个符号之前的符号,如果是比他小的符号,则要减去小的符号代表数值的两倍。
第二种方法是将数字中每个符合代表的数值都加上,然后查看数字中有没有出息要减去值的那些符号对。
题目代码:

public class Solution {
public static int romanToInt(String s) {
char[] ss = new char[100];
int sum = 0;
for(int i=0; i<s.length();i++)
ss[i]=s.charAt(i);
for(int i=0; i<s.length();i++){
if (ss[i]=='I'){
sum+=1;
}
if (ss[i]=='V'){
sum+=5;
if(i>0&&ss[i-1]=='I'){
sum-=2;
}
}
if (ss[i]=='X'){
sum+=10;
if(i>0&&ss[i-1]=='I'){
sum-=2;
}
if(i>0&&ss[i-1]=='V'){
sum-=10;
}
}
if (ss[i]=='L'){
sum+=50;
if(i>0&&ss[i-1]=='I'){
sum-=2;
}
if(i>0&&ss[i-1]=='V'){
sum-=10;
}
if(i>0&&ss[i-1]=='X'){
sum-=20;
}
}
if (ss[i]=='C'){
sum+=100;
if(i>0&&ss[i-1]=='I'){
sum-=2;
}
if(i>0&&ss[i-1]=='V'){
sum-=10;
}
if(i>0&&ss[i-1]=='X'){
sum-=20;
}
if(i>0&&ss[i-1]=='L'){
sum-=100;
}
}
if (ss[i]=='D'){
sum+=500;
if(i>0&&ss[i-1]=='I'){
sum-=2;
}
if(i>0&&ss[i-1]=='V'){
sum-=10;
}
if(i>0&&ss[i-1]=='X'){
sum-=20;
}
if(i>0&&ss[i-1]=='L'){
sum-=100;
}
if(i>0&&ss[i-1]=='C'){
sum-=200;
}
}
if (ss[i]=='M'){
sum+=1000;
if(i>0&&ss[i-1]=='I'){
sum-=2;
}
if(i>0&&ss[i-1]=='V'){
sum-=10;
}
if(i>0&&ss[i-1]=='X'){
sum-=20;
}
if(i>0&&ss[i-1]=='L'){
sum-=100;
}
if(i>0&&ss[i-1]=='C'){
sum-=200;
}
if(i>0&&ss[i-1]=='D'){
sum-=1000;
}
}
}
return sum;
}
}
13. Roman to Integer ★的更多相关文章
- 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 ,即 ...
- Leetcode 13. Roman to Integer(水)
13. Roman to Integer Easy Roman numerals are represented by seven different symbols: I, V, X, L, C, ...
- leetCode练题——13. Roman to Integer
1.题目13. Roman to Integer Roman numerals are represented by seven different symbols: I, V, X, L, C, D ...
- C# 写 LeetCode easy #13 Roman to Integer
13.Roman to Integer Roman numerals are represented by seven different symbols: I, V, X, L, C, D and ...
- 13. Roman to Integer【leetcode】
Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within t ...
- 【LeetCode】13. Roman to Integer (2 solutions)
Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within t ...
- 《LeetBook》leetcode题解(13):Roman to Integer[E]
我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...
- LeetCode - 13. Roman to Integer - 思考if-else与switch的比较 - ( C++ ) - 解题报告
1.题目: 原题:Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range ...
- 13. Roman to Integer[E]罗马数字转整数
题目 Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from ...
- [LeetCode] 13. Roman to Integer 罗马数字转化成整数
Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 ...
随机推荐
- 【TYVJ 1056】能量项链
[题目链接]传送门 [题解大意] 这题好水,可我还是调了一会,以下为调试中出现过的错误: 1.更新取值时弄清楚区间范围是[l,k][k+1,r]还是[l,k][k,r] 2.对于环形处理时左端点的取值 ...
- [java] 软工实践WordCount-Plus
整体思路 模块化 对于任何一个小模块,例如:输入.输出.计算都独立开来,降低耦合. 插件化 对于任何一个模块均作成插件,可拔插,可更换,而不会导致其他的插件出现故障. 事件驱动 使用观察者模式,用事件 ...
- Perl 正则匹配经验记录
0.正则匹配字典:http://www.cnblogs.com/itech/archive/2010/03/19/1689793.html 1.$/=">";重新定义字符串分 ...
- C# 说说lock到底锁谁?(1)
写在前面 最近一个月一直在弄文件传输组件,其中用到多线程的技术,但有的地方确实需要只能有一个线程来操作,如何才能保证只有一个线程呢?首先想到的就是锁的概念,最近在我们项目组中听的最多的也是锁谁,如何锁 ...
- 使用RStudio调试(debug)基础学习(二)和fGarch包中的garchFit函数估计GARCH模型的原理和源码
一.garchFit函数的参数--------------------------------------------- algorithm a string parameter that deter ...
- nrf52832板子焊接后总结的经验
将之前打的nrf52832的板子拿到手了,经过一番焊接和调试后,发现了一些问题,因为是第一次画板焊接调试,很多地方做的不好,现在将自己的一些经验总结如下: 1 在制板之前,丝印层有必要好好的检查,建议 ...
- 《R语言入门与实践》第二章:R包和帮助文档
这一章讲了两方面的内容,如何使用 R 包和帮助文档. R包 下载 R 包 命令: install.packages("<nameofpackage>") R 会话中启用 ...
- locate 和 find
因工作需求,需要查找到系统内是否有 密钥文件 id_rsa 或 id_dsa;想到两个工具find 和 locate find 可以对指定范围内的文件进行实时查找,但是 考虑到这种方法非常耗时. lo ...
- 使用PsPing测试Azure虚拟机的连通性
Azure虚拟机启动后,如果在个人的PC上ping该虚拟机的public IP,会出现Request time out的信息,无法ping通.这是因为在 Azure 中,ICMP 包无法通过防火墙和负 ...
- 从身份证管理系统思考企业CMDB的建设
关注嘉为科技,获取运维新知 对大部分中大型的企业来说,CMDB建设对于整个IT服务和IT运维管理的重要性不言而喻,但是目前仍然有非常多的企业无法建设好CMDB. 我最近刚好接触了一个公安系统的朋友,他 ...