力扣简13 罗马数字转整数
主要的问题是遗忘了字符串按位取出的函数 charAt()
最开始在复制不同条件时丢了右括号 以后一定要注意
从看题到解决共28分钟 自己也就是字符串转数组 挨个判断求和 最终把特殊情况减去
写出的代码如下:
class Solution {
public int romanToInt(String s) {
char[] n=new char[s.length()];
int num=0;
for(int i=0;i<s.length();i++) {
n[i]=s.charAt(i);
if(n[i]=='I') {
num=num+1;
}
else if(n[i]=='V') {
num=num+5;
}
else if(n[i]=='X') {
num=num+10;
}
else if(n[i]=='L') {
num=num+50;
}
else if(n[i]=='C') {
num=num+100;
}
else if(n[i]=='D') {
num=num+500;
}
else if(n[i]=='M') {
num=num+1000;
}
}
for(int i=0;i<s.length()-1;i++) {
if(n[i]=='I')
{
if(n[i+1]=='V'||n[i+1]=='X')
{
num-=2;
}
}
else if(n[i]=='X')
{
if(n[i+1]=='L'||n[i+1]=='C')
{
num-=20;
}
}
else if(n[i]=='C')
{
if(n[i+1]=='D'||n[i+1]=='M')
{
num-=200;
}
}
}
return num;
}
}
答案用了map 后续学到map再回头看

浙公网安备 33010602011771号