罗马数字转整数
程序员文章站
2023-12-31 08:57:10
罗马数字转整数题目来源:罗马数字转整数问题描述:问题分析:该题目最麻烦的地方就是,需要考虑左右的罗马数字,进行加或减。问题解决:可以将字符串倒着遍历,这样可以只考虑做减法的时候(只需多往前验证一个即可)代码实现package leetcode;public class test13 {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println(...
罗马数字转整数
题目来源:罗马数字转整数
问题描述:
问题分析:
该题目最麻烦的地方就是,需要考虑左右的罗马数字,进行加或减。
问题解决:
可以将字符串倒着遍历,这样可以只考虑做减法的时候(只需多往前验证一个即可)
代码实现
package leetcode;
public class test13 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(romanToInt("VII"));
}
public static int romanToInt(String s) {
int sum=0;
int i =s.length()-1;
boolean flag=true;
while(flag) {
if(s.charAt(i)=='I') {
sum+=1;
}else if(s.charAt(i)=='V'){
sum+=5;
if(i-1>=0&&s.charAt(i-1)=='I') {
sum--;
i--;
}
}else if(s.charAt(i)=='X') {
sum+=10;
if(i-1>=0&&s.charAt(i-1)=='I') {
sum--;
i--;
}
}else if(s.charAt(i)=='L') {
sum+=50;
if(i-1>=0&&s.charAt(i-1)=='X') {
sum-=10;
i--;
}
}else if(s.charAt(i)=='C') {
sum+=100;
if(i-1>=0&&s.charAt(i-1)=='X') {
sum-=10;
i--;
}
}else if(s.charAt(i)=='D') {
sum+=500;
if(i-1>=0&&s.charAt(i-1)=='C') {
sum-=100;
i--;
}
}else if(s.charAt(i)=='M') {
sum+=1000;
if(i-1>=0&&s.charAt(i-1)=='C') {
sum-=100;
i--;
}
}
i--;
if(i<0) {
flag=false;
}
}
return sum;
}
}
本文地址:https://blog.csdn.net/weixin_45282433/article/details/112288165