最近在刷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