厚积薄发

位运算

  • n&(n-1) 消除 n 的二进制中 最后一个1
    • 例如,回文数(字符串) 分为奇回文和偶回文两类,通过异或运算得到结果n,判断回文数(字符串)的条件为 n==0||(n&n-1)==0

字符与ASCII值相互转换

普通字符与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

数组转成list

Arrays.asList(数组);
Listlist =new ArrayList(Arrays.asList(a));

见解

  • 宽度深度并重。宽度可以开阔视野,增加考虑问题的全面性;而深度,则是抓住一个或若干个感兴趣的点深入学习,形成日后与他人竞争的优势。
原文地址:https://www.cnblogs.com/yh-simon/p/12952012.html