![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字符串
kay_zhyu
这个作者很懒,什么都没留下…
展开
-
KMP算法
设模式串(子串)为"p0...pm-1",KMP匹配算法的思想是:当模式串中的字符pj与主串中相应的字符Si不相等时,因其前j个字符("p0...pj-1")已经得到匹配,所以如果"p0...pk-1"="pj-k...pj-1"相同,这是可令pk与Si进行比较,从而使i无须每次都回退到0. 在KMP算法中,依据模式串的next函数值实现子串的滑动。若令next[j] =原创 2013-04-09 19:18:03 · 833 阅读 · 0 评论 -
面试100题系列之13大数的四则运算
关于大数的四则运算,我想网上有很多方法,感觉通用性不强,然后呢,功能不强大,效率不高~~问题多多啊~然后呢,大数这个东西又经常碰到,所以呢,我一咬牙,写了一个比较完整的,花了我一下午的时间啊,不过除法还没有写,有时间再写吧。最近事情太多了,写了之后再补上。OK,说一下我的思路。首先这里用字符串存数据,这个地球人都知道。第0位是高位。当我们算加减的时候需要从低位开始算起。所以我一开始的思路是将字原创 2013-05-02 18:24:47 · 1338 阅读 · 0 评论 -
面试100题系列之5字符串的排列组合问题
1、字符串的组合输入一个字符串,找出字符串中所有字符的所有组合形式。比如说abcd,其组合形式有a,b,c,d,ab,ac,ad,bc,bd,cd,abc,abd,acd,bcd,abcd。这里认为adb和abd是一样的情况。组合的情况也就是遇到一个字符,分两种情况,取当前这个字符,或者不取当前这个字符。然后对于每一个字符都做这样的考虑,典型的递归思路。void Range(char原创 2013-04-09 19:29:45 · 1031 阅读 · 0 评论 -
面试100题系列之15将字符串转换成数
1、输入一个字符串,将其转换成整数。注意,这里没说是正整数,所以需要考虑负数的情况。没什么技巧,直接算就可以了。只要考虑到负数就OK了,当然处理技巧也很重要。核心代码如下://字符串转换成整数int StrToInt(char *str){ if(!str) return -Inf; int nLen = strlen(str); int i = 0; int ans = 0;原创 2013-05-03 10:49:29 · 932 阅读 · 0 评论 -
杭电ACM1020 VS 1039
1020题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=10201039题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1039其实两个题是类似的,都是给一个字符串,检测连续的重复字符的子串。不过1039的附加条件更多//1020的代码#include#includechar s原创 2013-04-10 18:55:11 · 919 阅读 · 0 评论 -
剑指Offer读书笔记之第二章2字符替换
给定一个字符串str和一个子串SubStr,如果str里面的空间足够,写一个函数将str里面的字符ch替换成SubStr。书中只是一个特例:将空格替换成%20.题目分析:如果从前到后扫描str,碰到一个ch,那么ch后面的所有字符都要向后挪SubLen-1个位置。这样做的效率肯定是不高的,怎么在O(n)的时间复杂度内完成这个操作呢。从前到后扫描不行,那就从后到前扫描。如果预先知道了有多少个原创 2013-05-01 14:21:32 · 811 阅读 · 0 评论 -
面试100题系列之8单词反转 VS HDU1062——text reverse
给一个句子,将句子中的单词反转。思路:先将句子整体反转,再将单词一个个进行反转。*如果该字符是空格,前一个字符是单词,那么就在此处反转*如果该字符是单词,其前一个字符是空格,则记录下单词开始的位置特殊情况:句子后面是一串空格,输出的时候可能不想句子前面有空格,所以在反转之前需要先将空格滤去。#include#includechar a[100];void I原创 2013-04-07 18:49:34 · 935 阅读 · 0 评论 -
面试100题系列之10关于删除多余空格的再思考
题目描述:1、无连续相邻的两个空格2、字符串开头和结尾无空格3、新的一行开头和结尾无空格要得满分,必须满足一下两个条件A、不能增加新的内存空间B、只能循环字符串一次C、不准用库函数参考代码:这样就可以从文件中读入换行符了#include// 写删除字符串中的空格的程序void main(){ char str[10000]; int flag原创 2013-03-20 17:05:00 · 937 阅读 · 0 评论 -
面试100题系列之2字符串删除多余空格
其实就是删除多余的空格,其实两种方法,一种是在第一个遇到的单词前面加空格,这样的话需要考虑串首的情况。可以用flag来标记是不是句子的第一个单词。另一种方法是在单词结束的字符后面加空格,但需要考虑字符串以空格结尾的情况,遍历完字符串之后,直接判断最后一个元素是不是空格就可以了。第二种方法更直观一点。如果不仅仅是空格,还有回车。参考扩展问题及其再思考。#include#include原创 2013-04-22 21:38:28 · 877 阅读 · 0 评论 -
strcpy,memset,memmove,memcpy的实现
面试题中,属字符串的题最难,这几个函数在中都有定义。用这几个函数练练手,有可能面试官就会问到有关的问题。另外补充一点,为什么这里的函数都要返回指针,因为可能这些函数需要嵌套使用。比如说strlen(strcpy(str1,str2));char *strcpy(char *strDest, const char *strSrc){ assert(strDest && strSrc);原创 2013-04-05 18:07:57 · 747 阅读 · 0 评论