主要的问题是遗忘了字符串按位取出的函数 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再回头看