leetcode刷题小技巧总结(持续更新…)

最近在刷leetcode题,一些代码技巧和思路想要能记录下来,所以写了这篇博客,因为leetcode会继续刷下去,所以每当有笔记也会在这里持续更新。

* 位运算:

  • n & n-1:将n的二进制表示中的最后为1的那位改为0
//该代码为判断n中是否只有一个1
return n & (n-1) == 0
复制代码
  • n >> 1:逻辑右移一位,相当于将n除以2
  • i>>j &1:把 i 算术右移 j 位,然后检测最低位是否为1,此操作可用于判断某个数字的二进制表示中有多少个1,比如:
//该代码的sum即为tmp的二进制表示中有多少位1
int sum = 0;
while (tmp != 0){
  if ((tmp & 1) == 1)
      sum ++;
  tmp = tmp >> 1;
}
return sum;
复制代码

* 将数字字符串转为int数字:

String str = "25578"
int num = 0;
for(int i=0; i<str.length(); i++){
 num = num*10 + str.charAt(i)-'0';
}
复制代码

* 判断是否是回文字符串:

public boolean isPalindrome(String sb, int start, int end){   
for (int i=start,j=end; i<j; i++,j--){       
    if (sb.charAt(i) != sb.charAt(j))            
         return false;   
}    
return true;
}
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享