![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字符串问题
文章平均质量分 76
yingsun
坚持下去~
展开
-
求文件中单词出现的频数
一、主体思路: (1)建立一个hash表; --(a) hash函数:除留取余法,H(key) = key % size; --(b) 解决冲突的方法:链地址法,将所有映射到相同索引的字符串用链接指针连接在一起。 (2)读取文本文件word.txt,每次读取一行,然后分隔每个单词,插入到hash表,插入过程中会对单词出现次数统计;原创 2012-09-19 21:30:25 · 2004 阅读 · 0 评论 -
判断一个给定的字符串通过循环移位是否可以包含另一个字符串
比如说给定字符串“ABCD"通过循环移位是否可以包含“CDAB”。有两种方法,一种方法就是通过创建另外一个字符串,这个字符串是两个“ABCD”的连接,然后应用kmp在新创建的字符串中查找"CDAB",这样的时间复杂度是O(n), 空间复杂度也是O(n),还有另外一种方法是可在O(n)时间内完成,下面给出代码:#include#include#includeusing namespac原创 2013-06-13 16:42:47 · 4486 阅读 · 0 评论 -
Length of the longest substring without repeating characters(dp)
给出一个字符串,找出这个字符串中最长连续的而且没有重复字符的子串,并返回它的长度。例如,对于字符串“BDEFGABEF”最长连续且没有重复字符的子串可以是“DEFGAB”或者“DEFGAB”,长度是6。对于字符串“BBBB”,它满足要求的字串的长度是1,即“B”。首先分析一下,对于给定长度的字符串,它一共有多少个字串呢? 子串数 = 长度为1的子串数+长度为2的子串数+ 。。。+长度为n的子串原创 2013-06-07 16:55:20 · 3183 阅读 · 0 评论 -
请打印给定文件的最后n行
首先想到的最笨的办法就是打开文件,然后遍历一遍,计算出文件中的行数,然后在从头开始遍历文件,在某个位置开始打印从文件中读出的行。这是一个比较笨的方法,还有一种很巧妙的方法就是应用circular buffer,初次见到这个名称的人可能感觉很神奇,但是如果知道循环队列这个概念的话,那么就不难理解了。如果我们准备打印一个文件的最后n行,我们可以建立一个n+1空间的循环队列,至于为什么是n+1的循环队列原创 2013-05-13 15:04:13 · 1913 阅读 · 0 评论 -
带有通配符的字符串和另一个字符串进行匹配
先吐个槽吧,公司也有这个算法,看了半天也不知道干什么呢,写的非常复杂,偶然的发现一个算法,小巧而精密,下面详细叙述:* 可以匹配0个或0个以上的字符?可以匹配一个字符这个算法应用的是递归的算法,开始担心如果字符串过长的话,会因递归引起栈的溢出,还好在网上查了一下,win32默认的递归栈大小是2M,这足以进行很长字符串的匹配。下面是核心的代码,思路都在代码的注释中,下面给出代原创 2013-05-09 15:07:33 · 3058 阅读 · 5 评论 -
计算一条英文句子中单词个数
给定一句英文,除了字母之外,还包含空格回车和水平制表符号('\t', '\n'), 根据这三个符号来计算一句英文中所含有单词的个数。下面给出的这个方法是我从一个国外网站上看到的,思路清晰而且很有逻辑性,于是决定记录下来:设定两个标志: IN, OUT和一个变量state,当遇到字母的时候state值为IN, 当遇到上面说的那三个字符的时候state为OUT。你可以测试任何情况,包括两个单词原创 2013-05-09 09:54:25 · 3355 阅读 · 0 评论 -
字符串移位包含问题
给定两个字符串分别是:AABCD,CDAA,如果对字符串AABCD进行循环移位,移动的位数在AABCD的长度范围内,在所有的移位情况之中,移位后的字符串是否包含第二个字符串,也就是第二个字符串是第一个字符串移位后的字串。当然移动0位的情况不算,比如AABCD,AABC, 这不用移位,第二个字符串就是第一个字符串的字串。有三种方法来解决这个问题,最后会对三种方法做一个对比。1,brute-for原创 2013-01-04 16:59:10 · 3893 阅读 · 2 评论 -
只允许遍历一遍字符串,找出字符串中第一个只出现一次的字符
find the first unique character in a string and you can just traverse this string only one time. if there is no such character, just return '#' and '#' will not appear in the string, else return the原创 2013-01-16 10:21:20 · 11259 阅读 · 0 评论 -
计算字符串的相似度-两种解法
一直不理解,为什么要计算两个字符串的相似度呢。什么叫做两个字符串的相似度。经常看别人的博客,碰到比较牛的人,然后就翻了翻,终于找到了比较全面的答案和为什么要计算字符串相似度的解释。因为搜索引擎要把通过爬虫抓取的页面给记录下来,那么除了通过记录url是否被访问过之外,还可以这样,比较两个页面的相似度,因为不同的url中可能记录着相同的内容,这样,就不必再次记录到搜索引擎的存储空间中去了。还有,大家毕原创 2012-12-09 13:34:57 · 54927 阅读 · 7 评论 -
给定字符串,要求除去字符串中重复出现的字符
请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“abacacde”过滤结果为“abcde”。笔试会碰到这种题目,有的题目要求会多一条,就是不许重新分配存储空间来临时存储字符串,即节省空间的原则。综合两个博客的研究结果(http://blog.csdn.net/luno1/article/details/7945227,http://blog.csd原创 2012-09-22 13:23:08 · 2806 阅读 · 0 评论 -
输入两个字符串,从第一字符串中删除第二个字符串中所有的字符
题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。 要编程完成这道题要求的功能可能并不难。毕竟,这道题的基本思路就是在第一个字符串中拿到一个字符,在第二个字符串中查找一下,看它是不是在第二个字符串中。如果在的话,就从第一个字符串中删除。但如原创 2012-12-02 21:07:51 · 11472 阅读 · 2 评论 -
一个字符数组,里面的字符可能是a-z、A-Z、0-9.现在要求对数组进行排序,要求所有小写字符放在最前面,所有大写字符放在中间,所有数字放在最后,而且各部分内部分别有序(创新工场)
一个字符数组,里面的字符可能是a-z、A-Z、0-9.现在要求对数组进行排序,要求所有小写字符放在最前面,所有大写字符放在中间,所有数字放在最后,而且各部分内部分别有序。思路:先进行字符串排序,用堆排序,按降序排列,排列依据字母对应的ascii值。排序之后按字符类别进行翻转。时间复杂度O(nlogn)#include#includeusing namespace std;void原创 2013-11-04 16:56:27 · 7390 阅读 · 1 评论