n&(n-1)
消除 n
的二进制中 最后一个1
n
,判断回文数(字符串)的条件为 n==0||(n&n-1)==0
普通字符与ASCII值的相互转换
普通字符 -> Ascii值:
char c = ‘a‘;
byte b =(byte)c;
或 int i = c;
Ascii值 -> 普通字符:
int d = 97 ;
char c = (char)d ;
数字字符与数字的相互转换
数字字符 -> 数字:
char c=‘1‘;
int i = c - ‘0‘;
或 int i = Integer.parseInt(c+"");
或 int i = Character.digit(c,10);
数字 -> 数字字符:
int i = 9;
char c = (char)(i+‘0‘);
/*
*从下标t开始,数据都是逆序的,进行翻转 如4321->1234
*/
private void reverse(char[] chars, int t) {
if(chars==null||chars.length==0) return;
int len=chars.length;
for(int i=0;i<(len-t)/2;i++){
int m=t+i;
int n=len-1-i;
if(m<n){
swap(chars, m, n);
}
}
}
}
采用阵地攻守的思想:
第一个数字作为第一个士兵,守阵地;count = 1;
遇到相同元素,count++;
遇到不相同元素,即为敌人,同归于尽,count--;当遇到count为0的情况,又以新的i值作为守阵地的士兵,继续下去,到最后还留在阵地上的士兵,有可能是主元素。
再加一次循环,记录这个士兵的个数看是否大于数组一般即可。
集合
降序
Collections.sort(list,Collections.reverseOrder())//list:8 7 6 5 4 2 1
逆序
Collections.reverse(list)//list:4 1 8 6 2 7 5
数组
降序(一定要注意调用Collections.reverseOrder()需要是Integer[],而不是int[])
Integer[] a={5 7 2 6 8 1 4}
Arrays.sort(a,Collections.reverseOrder())//a: 8 7 6 5 4 2 1
Arrays.asList(数组);
List
原文:https://www.cnblogs.com/yh-simon/p/12952012.html