Roman to Integer:转换罗马数字到阿拉伯数字
2017-11-20 08:43
656 查看
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
解释:罗马数字:
I:1
V:5
X:10
L:50
C:100
D:500
M:1000
比如:MCMLXX:1970
MDCLXVI:1666
思路:从高位到低位扫描
可将1970划分为
[M] [CM] [L] [X] [X],即每个段内都是非降序,程序上体现为当出现升序时,减去前一个数字,否则加上前一个数字
class Solution {
public int measure(char c){
if(c=='I'){
return 1;
}else if(c=='V'){
return 5;
}else if(c=='X'){
return 10;
}else if(c=='L'){
return 50;
}else if(c=='C'){
return 100;
}else if(c=='D'){
return 500;
}else if(c=='M'){
return 1000;
}
return 0;
}
public int romanToInt(String s) {
int sum = 0;
int pre = 0;
int temp = 0;
for(int i = 0;i <s.length() ;i++){
temp = measure(s.charAt(i));
if(temp <= pre){
sum += pre;
pre = temp;
}else{
sum -= pre;
pre = temp;
}
}
sum += pre;
return sum;
}
}
最近做点简单的题,偷偷懒......
Input is guaranteed to be within the range from 1 to 3999.
解释:罗马数字:
I:1
V:5
X:10
L:50
C:100
D:500
M:1000
比如:MCMLXX:1970
MDCLXVI:1666
思路:从高位到低位扫描
可将1970划分为
[M] [CM] [L] [X] [X],即每个段内都是非降序,程序上体现为当出现升序时,减去前一个数字,否则加上前一个数字
class Solution {
public int measure(char c){
if(c=='I'){
return 1;
}else if(c=='V'){
return 5;
}else if(c=='X'){
return 10;
}else if(c=='L'){
return 50;
}else if(c=='C'){
return 100;
}else if(c=='D'){
return 500;
}else if(c=='M'){
return 1000;
}
return 0;
}
public int romanToInt(String s) {
int sum = 0;
int pre = 0;
int temp = 0;
for(int i = 0;i <s.length() ;i++){
temp = measure(s.charAt(i));
if(temp <= pre){
sum += pre;
pre = temp;
}else{
sum -= pre;
pre = temp;
}
}
sum += pre;
return sum;
}
}
最近做点简单的题,偷偷懒......
相关文章推荐
- 将阿拉伯数字转换成罗马数字 Integer to Roman
- 分析、测试与总结:罗马数字和阿拉伯数字的转换[roman to integer and integer to roman in c++]
- 58. 分析、测试与总结:罗马数字和阿拉伯数字的转换[roman to integer and integer to roman in c++]
- LeetCode 12. Integer to Roman(阿拉伯转罗马数字)
- Roman to Integer 罗马数字转阿拉伯数字@LeetCode
- 将数字转换为罗马数字(Integer to Roman)
- [LeetCode]—Roman to Integer 罗马数字转阿拉伯数字
- LeetCode Roman to Integer 罗马数字转阿拉伯数字
- leetcode-12. Integer to Roman(整数转换成罗马数字)
- leetcode 12 Integer to Roman(整型数转换为罗马数字)
- leetcode 12 ,13 Integer to Roman &&Roman to Integer 罗马与阿拉伯数组转换
- [C++]LeetCode 12: Integer to Roman(将整数转换为罗马数字)
- LeetCode 12. Integer to Roman(罗马字符转阿拉伯数字)
- Roman to Integer---罗马数字转换为十进制整数
- Integer to Roman (罗马数字转换) 【leetcode】
- LeetCode | Integer to Roman(整数转换成罗马数字)
- Leet Code 13 Roman to Integer - 罗马数字转成整数 - Java
- 45. leetCode12: Integer to Roman【数字转化为罗马字母】
- LeetCode OJ 之 Integer to Roman (整数转化为罗马数字)
- Leet Code 12 Integer to Roman - 整数转成罗马数字 - Java