- 博客(17)
- 收藏
- 关注
原创 Substring with Concatenation of All Words
刷了LeetCode30道题了,这道题是最难通过的,测试数据很刁钻,各种超时和边界考虑不周。参考了很多解法,中文的就没有不超时又解释明白的。以下是我的带注释代码。想看懂必须得先会Longest Substring Without Repeating Characters后两种解法。public class Solution{ public List<Integer> findSubstrin
2016-06-06 14:17:30
601
原创 位运算符巧用
使用移位运算符计算一个数的2的次幂的倍数。n << 1 即等价于 n*2n >> 1 即等价于 n/2原理可参考十进制:n << 1 相当于结尾加个0,等价于 n*10。 n >> 1 相当于结尾去掉一位,等价于 n/10。 注:对于右移,各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)使用&运算符判断奇偶print
2016-06-04 15:32:54
675
原创 补码和unsigned
补码的由来:考虑任意一个负数,比如-24,如何表示呢?不失一般性的,假设我们用一个字节来表示这个负数。我们知道24和0的二进制表示分别是:0001 10000000 0000。根据以下两式: -24 + 24 = 0;1110 1000 + 0001 1000 = 1 0000 0000;因为只用一个字节来表示,所以第二个等式右边的‘1’溢出了。显示出来的结果就是8个0。
2016-06-04 14:34:43
1443
原创 大端(BIG-ENDIAN)小端(LITTLE-ENDIAN)
总是记不住大端和小端,就像我记不住阴历和阳历一样。 这次来个一句话总结:小端存储的数据在截取的时候往往会保留下来。x86CPU都是小端的。如下是判断大小端的超简洁一行代码。printf("%s", 1&0xff ? "Little-Endian" : "End-Endian");
2016-06-04 11:38:09
694
原创 编译成exe可执行文件的过程
.c—–>.i—–>.s—–>.o—–>.exe .i是编译预处理后的文件,然后经编译器编译后生成汇编代码文件.s,再经过汇编后变成目标代码文件.o,经过链接库文件行成.exe
2016-06-04 10:56:54
1012
原创 关于#include
一:<> 和“”的区别。前者只在指定目录去寻找。后者现在当前目录找,找不到再去指定目录 二:#include不是用来引入库的,现在c语言编译器默认引入所有标准库。他的作用只是引入了函数原型。比如#include
2016-06-04 10:55:03
514
原创 结构体内存对齐
结构体的sizeof的值总是≥各个成员的sizeof的值的和,等于所有成员中sizeof值最大的一个的sizeof的值乘上成员个数
2016-06-04 10:44:52
499
原创 关于strcpy函数
该函数的两个参数内存上不能重叠。因为该函数在现代计算机的实现上要比我们想象的复杂,之所以这样是因为这个函数覆盖面很广,所以一点点效率的提升最终都会造成质的改变。比如cpu是多线程处理器时,程序会分配给不同核不同任务来进行字符串复制。所以如果内存上重叠则会出现问题。char * dst = (char*) malloc (strlen(src)+1);strcpy(dst,src);分配内存时长度别
2016-06-04 10:43:14
567
原创 (void *),(void **)和(void***)
多用于强制转换,是一种逻辑上的表达。(void* )表示强制转换的指针是一级指针,(void **)表示是二级指针。他们的结果是一样的。
2016-06-04 10:29:56
3908
原创 指针类型的意义
int main(){ char *p; (int *P) char ch[6]="fucko"; p=ch; printf("%c",*(p+1));}得到的字符为u, 即第二个字符, 当把定义指针的char *P替换成int *p时, 输出的却是o, 即第五个字符. 所以可以看出, 定义指针时, 指针前的int或者是char主要的功能是决定你将指针的地址
2016-06-04 10:24:43
1166
原创 随机数
一共三步:#include <time.h> /*用到了time函数,所以要有这个头文件*/srand((unsigned) time(NULL)); /*播种子*/int number = rand()%(Y-X+1)+X;/*产生[X,Y]以内的随机整数*/解释下rand()%(Y-X+1)+X,rand()%100,生成[0,99]随机数。rand()%(Y-X+1)生成 [0,Y-X
2016-06-04 10:22:13
494
原创 ASCII和ANSI
ASCII:American Standard Code for Information Interchange, 美国标准信息交换代码 ANSI:American National Standards Institute 美国国家标准学会
2016-06-04 10:13:08
623
原创 预定义宏陷阱
预定义宏的定义和使用时要小心陷阱#define max(A,B) ( (A) > (B) ? (A) : (B) )max(i++,j++); /* wrong */#define square(x) x*x /* wrong */
2016-06-04 09:57:35
452
原创 关于getchar()
一、首先给出《The_C_Programming_Language》这本书中的例子:#include int main( ){ int c; c = getchar(); while (c != EOF) { putchar(); c= getchar(); }
2016-06-04 09:43:58
1032
原创 EOF和'\0'
'\0'是ascII码为0的一个字符(str[length]='\0'和str[length]=0 等价)用在字符串结尾表示字符的结束,要养成在一个自定义的字符串结尾加入'\0'的习惯EOF是文件结束符,多用于文件和输入输出流。
2016-06-04 09:39:09
864
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人