CSDN编程题目二十进制数的加法

来源:互联网 发布:mac 用鼠标吗 编辑:程序博客网 时间:2024/05/12 22:35

今天看了CSDN上的编程题目,自己动手实现了下,初次提交在线编译报未检查***错误,后面加了@SuppressWarnings("unchecked"),能提交成功,

但是后面提示:“执行测试用例失败!解析这组数据出错了:9c,de5h53hi0id437bbf796ih39bff86igeii10e8i2c983eg00c9ac1a678b80h0bf3a86cf9cb2h6e8830292cef88eg3ga312c”,

不知为何,望解答


题目详情

在二十进制中,我们除了使用数字0-9以外,还使用字母a-j(表示10-19),给定两个二十进制整数,求它们的和。

输入是两个二十进制整数,且都大于0,不超过100位;

输出是它们的和(二十进制),且不包含首0。我们用字符串来表示二十进制整数。


代码:


import java.util.HashMap;import java.util.Iterator;import java.util.Map;public class Test {     static Map<Character,Integer> map = new HashMap<Character,Integer>();        public static void initMap(){        map.put('0', 0);        map.put('1', 1);        map.put('2', 2);        map.put('3', 3);        map.put('4', 4);        map.put('5', 5);        map.put('6', 6);        map.put('7', 7);        map.put('8', 8);        map.put('9', 9);        map.put('a', 10);        map.put('b', 11);        map.put('c', 12);        map.put('d', 13);        map.put('e', 14);        map.put('f', 15);        map.put('g', 16);        map.put('h', 17);        map.put('i', 18);        map.put('j', 19);    }   public static String calculate(String x, String y){        initMap();        boolean flag = x.length()>=y.length();        return calculate2(flag?x:y,flag?y:x);    }             public static String calculate2(String num1, String num2){        int la = num1.length();        int lb = num2.length();        if(la > lb){            for(int i=0;i<la-lb;i++){                num2 = "0"+num2;            }        }        return calculate3(num1,num2);    }            public static String calculate3(String num1,String num2){        String str = "";        int r = 0;        for(int i=num1.length()-1;i>=0;i--){            int sum = map.get(num1.charAt(i))+ map.get(num2.charAt(i))+r;            r = sum/20;            int s = sum%20;            str = getKeyByValue(s) + str;        }        if(r>0){            str = r+ str;        }        return str;    }        @SuppressWarnings("unchecked")public static char getKeyByValue(int value){        Iterator it=map.entrySet().iterator();        while(it.hasNext()) {           Map.Entry<Character,Integer> entry=(Map.Entry)it.next();           if(entry.getValue().equals(value)) {               return  entry.getKey();                   }        }        return '0';    }    //start 提示:自动阅卷起始唯一标识,请勿删除或增加。     public static void main(String args[])     {        System.out.println(calculate("123","12j"));    }     //end //提示:自动阅卷结束唯一标识,请勿删除或增加。}


0 0
原创粉丝点击