摘要: 传说这是一道知名外企的笔试题但是看了一些文章,都只是单纯的转了那个算法,弱弱的说一句,那个算法中把'\0'写成了'/0',会导致在while ('/0' != *pTemp) { hashTable[*pTemp] = 1; ++ pTemp; } 这一步的时候,一直循环下去,直到系统中断。不过调试的时候发现了一个很有意思的事情,就是之前pTemp之前是指向aeiou,这就是传入的第二个参数,当遍历完这个参数之后,pTemp会继续指向栈中的下一个地址,也就是第一个参数they are students的地址,这个... 阅读全文
posted @ 2012-10-24 21:35 三更_雨 阅读(8090) 评论(1) 推荐(0) 编辑
摘要: 原文地址:http://www.51testing.com/html/72/n-221172.html传说常见的一个笔试题:不使用中间变量求const字符串长度,即实现求字符串长度库函数strlen函数。函数接口声明如下:int strlen(const char *p); 思路分析: 在字符串中通常可以利用最后一个结束符’\0’,但此处参数为const,只读,那么我们不能打他的主意。 函数运行过程中不占用内存基本不可能,除非都使用了寄存器。“不使用中间变量”只是说程序员不能显示的申请内存而已,即不能有局部变量或者动态内存申请。 如果函数自动申请栈内存或者使用寄存器存储变量,或者使用立... 阅读全文
posted @ 2012-10-24 20:31 三更_雨 阅读(4369) 评论(0) 推荐(1) 编辑
摘要: 主要是为了记录最后一种神奇的方法。原文地址:http://www.cnblogs.com/xianghang123/archive/2011/08/24/2152408.html这是一个很有意思的问题,也是在面试中最容易被问到的问题之一。这个问题有个正式的名字叫Hamming_weight,而且wikipedia上也提供了很好的位运算解决的方法,这个下面也会提到。解决这个问题的第一想法是一位一位的观察,判断是否为1,是则计数器加一,否则跳到下一位,于是很容易有这样的程序。int test(int n){ int count=0; while(n != 0){ if(n... 阅读全文
posted @ 2012-10-24 13:14 三更_雨 阅读(291) 评论(0) 推荐(0) 编辑