面试题 05.03. 翻转数位 前言题目源码 前言 位运算,逐一比较每一位,记录当前位1的个数,和0之后1的个数 题目 官方题目 源码 class Solution { public int reverseBits(int num) { int l=0,r=0,ans=0;//l为0左边的1个数,r是右边 for(int i=0;i<32;i++){ if((num & 1)==1){ r++;//从低位到高位,若是1则计数 }else{ l = r+1;//遇到0时,l就是加上0翻转的个数,r置零 r=0; } ans=Math.max(l+r,ans); num >>= 1; } return ans; } }