码迷,mamicode.com
首页 > 其他好文 > 详细

三十六进制加法

时间:2018-02-14 11:45:34      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:res   uil   getc   bsp   out   stat   for   oid   reverse   

public class Solution
{  
    /**
     * num1 num2 为两个三十六进制的数,计算相加结果
     * @param num1
     * @param num2
     * @return
     */
    public String add(String num1, String num2)
    {
        StringBuilder result = new StringBuilder();
        int carry = 0;
        int len1 = num1.length() - 1;
        int len2 = num2.length() - 1;
        for(; len1>=0 && len2>=0; len1--, len2--)
        {
            carry = add(num1, num2, result, carry, len1, len2);
        }
        
        while(len1>=0)
        {
            carry = add(num1, num2, result, carry, len1, len2);
            len1--;
        }
        while(len2>=0)
        {
            carry = add(num1, num2, result, carry, len1, len2);
            len2--;
        }
        if(carry > 0)
            result.append(carry);
        System.out.println(result.toString());
        return result.reverse().toString();
    }

    private int add(String num1, String num2, StringBuilder result, int carry, int len1, int len2)
    {
        int n1 = 0, n2 = 0;
        if(len1 >= 0)
        {
            n1 = getNumByChar(num1.charAt(len1));
        }
        if(len2 >= 0)
        {
            n2 = getNumByChar(num2.charAt(len2));
        }
        int sum = n1 + n2 + carry;
        carry = sum / 36;
        result.append(getCharByNum(sum % 36));
        return carry;
    }
    
    public char getCharByNum(int n)
    {
        if(n<10)
        {
            return (char)((int)‘0‘ + n);
        }
        else
        {
            return (char)((int)‘a‘ + (n-10));
        }
    }
    
    public int getNumByChar(char c)
    {
        if(c>=0 && c<=9)
        {
            return c - ‘0‘;
        }
        else
        {
            return (c - ‘a‘) + 10;
        }
    }
    
    public static void main(String[] args)
    {
        System.out.println(new Solution().add("ab", "z"));
    }
    
}

 

三十六进制加法

标签:res   uil   getc   bsp   out   stat   for   oid   reverse   

原文地址:https://www.cnblogs.com/woniu4/p/8448011.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!