面试题 17.01. 不用加号的加法

​​题目来源:

        leetcode题目,网址:面试题 17.01. 不用加号的加法 - 力扣(LeetCode)

解题思路:

        转化为二进制串,然后模仿加法操作即可。

解题代码:

class Solution {
    public int add(int a, int b) {
        String strA=Integer.toBinaryString(a);
        String strB=Integer.toBinaryString(b);
        StringBuffer res=new StringBuffer();
        char carryBit='0';
        for(int i=strA.length()-1,j=strB.length()-1;i>=0 || j>=0;i--,j--){

            char tempA=i>=0?strA.charAt(i):'0';
            char tempB=j>=0?strB.charAt(j):'0';
            if(tempA==tempB){
                res.append(carryBit);
                if(tempA=='0'){
                    carryBit='0';
                }else{
                        carryBit='1';
                }
            }else{
                if(carryBit=='0'){
                    res.append('1');
                    carryBit='0';
                }else{
                    res.append('0');
                    carryBit='1';
                }
            } 
        }
        System.out.println(res);
        if(carryBit=='1' && res.length()<32){
            res.append('1');
        }
        res.reverse();
        return getNum(res);
    }
    public int getNum(StringBuffer str){
        int res=0;
        for(int i=0;i
 
  

总结:

        傻了,直接对原来的两个数进行操作就行了,计算机中保存的就是二进制串。

        官方题解是直接用位运算操作。


你可能感兴趣的:(#,java,leetcode,java)