13. Roman to Integer ★
来源:互联网 发布:淘宝双皇冠店铺多少钱 编辑:程序博客网 时间:2024/06/08 19:48
题目内容:
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 ★
- 13. Roman to Integer
- 13.Roman to Integer
- 13. Roman to Integer
- 13.Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- mac 下 redis 安装,并配置开机自启动
- 深度学习、图像分类入门,从VGG16卷积神经网络开始
- 【Tomcat】shutdown.bat 错误:java.net.ConnectException错误 找不到8005端口的解决办法
- C++ 解决 multiple definition of & previous definition here编译错误
- 大话设计模式读书笔记(一) 简单工厂模式
- 13. Roman to Integer ★
- 第二十六讲项目三 分段函数求值switch语句版
- 求自定义类型序列中的中位数
- linux 安装jdk
- L1-2点赞
- PHP伪静态的处理
- 华为IT应用开发工程师(C++应用软件)实习生笔试+360企业安全服务端开发工程师实习生笔试
- String.spli()用法小结
- 我的threejs学习笔记(七)——spotLight