LeetCode.13. Roman to Integer

来源:互联网 发布:明显淘宝店 编辑:程序博客网 时间:2024/04/29 18:15

我的答案:67.72%

public class Solution {    public int romanToInt(String s) {        char[] arr=s.toCharArray();        int leng=arr.length;        if(leng<2) return change(arr[0]);        int sum=change(arr[leng-1]);        for(int i=0;i<leng-1;i++){            if(change(arr[i])<change(arr[i+1])){                sum=sum-change(arr[i]);            }else{                sum=sum+change(arr[i]);            }        }        return sum;    }    private static int change(char c) {        switch(c){        case 'I': return 1;        case 'V': return 5;        case 'X': return 10;        case 'L': return 50;        case 'C': return 100;        case 'D': return 500;        case 'M': return 1000;        }         return 0;    }}

别人的答案

public class Solution {    public int romanToInt(String s) {        //:Ⅰ(1)Ⅴ(5)Ⅹ(10)L(50)C(100)D(500)M(1000)         // rules:位于大数的后面时就作为加数;位于大数的前面就作为减数        //eg:Ⅲ=3,Ⅳ=4,Ⅵ=6,ⅩⅨ=19,ⅩⅩ=20,ⅩLⅤ=45,MCMⅩⅩC=1980        //"DCXXI"        if(s == null || s.length() == 0) return 0;        int len = s.length();        HashMap<Character,Integer> map = new HashMap<Character,Integer>();        map.put('I',1);        map.put('V',5);        map.put('X',10);        map.put('L',50);        map.put('C',100);        map.put('D',500);        map.put('M',1000);        int result = map.get(s.charAt(len -1));        int pivot = result;        for(int i = len -2; i>= 0;i--){            int curr = map.get(s.charAt(i));            if(curr >=  pivot){                result += curr;            }else{                result -= curr;            }            pivot = curr;        }        return result;    }}
0 0
原创粉丝点击