03 2014 档案
摘要:一个长度为len的字符串,对其循环右移n位[期望]char str[] = "abcdefg";右移3次后,变成"efgabcd"[思路]思路1.如果用每移动一次,就要把整个字符串整体移动一次的方法,显得太费劲了。我们可以用空间换时间,通过内存拷贝来实现。需要新申请一块相同大小的内存,把原字符串的后n个字节拷贝到它的开始地址,把原字符串的前(len-n)个字节拷贝到它的(开始地址+n)处。为便于查看结果,我们先定义一个打印字符串的函数void print_str(char *str);void print_str(char *str){ int i,le
阅读全文
摘要:给定一个含有n个元素的字符串,实现逆序。这是个很基础的问题,实现方式也是很常见的c语言思路。虽然简单,但是仍然记录下来。[期望]比如char str[] = "abcdefg";逆序后为:"gfedcba";[思路]分别从字符串的头和尾部向中间进发,依次交换头尾的值,直到在中间相遇。代码:#include #include void print_str(char *str){ int i,len; if (str == NULL) { return; } len = strlen(str); for(i=0; i<len; i++) { ...
阅读全文
摘要:查找单词序列在文章中出现的次数[期望]对于测试char *substrs[3] = {"ffff", "cindy", "Bill"};char *str = "Hellocindy, BillGatesBill---cindy-ffffffxxx23424cindycindy";找到的结果应该是:"ffff" => 3,"cindy" => 4,"Bill" => 2[抱怨]c语言没有基础数据结构hash用来方便地表示上面这种结果,像p
阅读全文
摘要:最近在纸上写一个已排序数组的合并时,花了超过预期的时间。仔细想想,这种要放到毕业找工作那会两下就出来了,原因还在于工作后对基础没有重视,疏于练习。说开一点,现在搜索引擎的发达确实给问题的解决带来了便利,但是久而久之,对很多东西的掌握其实并不深入。比如淘宝系的人经常分享一些linux内核IO优化相关的内容,咋看一下,原来是这样,觉得也不难嘛,其实不然,如果给一张白纸让你自己把流程画出来,讲解清楚,还有有难度的。这里问题的关键在于很多时候我们只是通过互联网的便利了解某个东西,实际上并不掌握它。纸上得来终觉浅,绝知此事要躬行。古人早就把道理告诉了我们,只是知易行难而已。现在IT界新语言、新概念层出不
阅读全文