题解 | #懂二进制#

懂二进制

https://www.nowcoder.com/practice/120e406db3fd46f09d55d59093f13dd8

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param m int整型
     * @param n int整型
     * @return int整型
     */
    public int countBitDiff (int m, int n) {
        // write code here
        int tempM = Math.abs(m);
        int tenpN = Math.abs(n);
        // 将m和n转化二进制
        StringBuffer sbA = new StringBuffer();
        StringBuffer sbB = new StringBuffer();
        while (tempM > 0) {
            sbA.append(tempM % 2);
            tempM = tempM / 2;
        }

        while (tenpN > 0) {
            sbB.append(tenpN % 2);
            tenpN = tenpN / 2;
        }
        // 统计不同位
        int count = 0;
        int len = sbA.length() > sbB.length() ? sbA.length() : sbB.length();
        for (int i = 0; i < len; i ++) {
            if (sbA.length() - 1 < i) {
                sbA.append('0');
            } else if (sbB.length() - 1 < i) {
                sbB.append('0');
            }
        }
        for (int i = 0; i < len; i ++) {
            if (sbA.charAt(i) != sbB.charAt(i)) {
                count ++;
            }
        }
        return count;
    }
}

全部评论

相关推荐

LemontreeN:有的兄弟有的我今天一天面了五场,4个二面一个hr面
投递字节跳动等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务