面试专题——字符串处理/数组
文章平均质量分 75
huangxy10
这个作者很懒,什么都没留下…
展开
-
替换字符串中的空格
题目:请实现一个函数,把字符串中的每个空格替换成“%20”,例如输入:“We are happy!", 则输出”We%20are%20happy!"。思路:1,可以另申请一片内存,使之足够大,然后一个一个拷贝原字符串,如果是空格,则添加”%20”,否则直接拷贝。2,如果该字符串后有足够的空间,则无须再申请一片内存。可以先计算出字符串中原有的空格数,然后在从后先前拷贝。原创 2012-09-04 10:36:13 · 924 阅读 · 0 评论 -
编程之美-最短摘要
2011年题目:Alibaba笔试题:给定一段产品的英文描述,包含M个英文字母,每个英文单词以空格分隔,无其他标点符号;再给定N个英文单词关键字,请说明思路并编程实现方法String extractSummary(String description,String[] key words),目标是找出此产品描述中包含N个关键字(每个关键词至少出现一次)的长度最短的子串,作为产品简介输出原创 2012-10-18 18:54:25 · 2755 阅读 · 2 评论 -
perfect shuffle 算法的一个线性复杂度实现
今天又发现一个关于完美洗牌的算法。这个比较简单一些,由 microsoft的Peiyush Jain提出。 原论文: A Simple In-Place Algorithm for In-Shuffle. Peiyush Jain, Microsoft Corporation. 转载 2012-10-18 12:05:49 · 2848 阅读 · 0 评论 -
寻找数组中的最小值和最大值——编程之美2.10
转自:http://blog.csdn.net/flyinghearts/article/details/6388834#问题:寻找数组中的最小值和最大值。 一道很简单的题目,一般有下面4种解法:1 遍历两次,每次分别找出最小值和最大值。2 只遍历一次,每次取出的元素先与已找到的最小值比较,再与已找到的最大值比较。3 每次取两个元素,将较小者与已找到的最小值比转载 2012-10-07 23:52:07 · 4123 阅读 · 1 评论 -
字符串/数组面试题
1 在一个字符串中找到第一个只出现一次的字符,如输入abac,则输出b。2 输出字符串的所有组合,如"abc"输出a、b、c、ab、ac、bc、abc。3 根据条件找出两个数。4 求数组(或环状数组)的最大连续(或不连续)子序列和。 1 在一个字符串中找到第一个只出现一次的字符,如输入abac,则输出b。本题看似很简单,开转载 2012-10-08 00:06:28 · 1339 阅读 · 0 评论 -
去掉C/C++源程序中的注释
http://www.cnblogs.com/yangyangye/articles/1771823.html一道题目,输入是一个正确的C/C++源程序,输出是将所有注释去掉之后的程序。不细想觉得很简单,字符串搜索,找到//后再找一个回车,删掉,找到/*后再找一个*/,删掉,还有什么好做的,太简单了。给个测试例子:#include "stdafx.h"#include转载 2012-09-04 20:42:05 · 1860 阅读 · 0 评论 -
数据结构之字典树
字典树是一种处理字符串的数据结构,主要用于字符串的检索,排序和统计等。又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来节约存储空间,最大限度地减少无谓的字符串比较,查询效率比哈希表高。例题:统计难题转载 2012-09-05 13:26:03 · 3561 阅读 · 0 评论 -
字符串的组合
题目:输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。思路:用递归的思路来求字符串的组合:假设我们想在长度为n的字符串中求m个字符的组合。我们先从头扫描字符串的第一个字符。针对第一个字符,我们有两种选择:一是把这个字符放到组合中去,接下来我们需要在剩下的n-1个字符中选取m-转载 2012-09-04 22:03:45 · 648 阅读 · 1 评论 -
字符串操作
http://rjwyr.blog.163.com/blog/static/112986400201153061911864/#include #include #include #include #include using namespace std;/*\1.翻转句子中的单词题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。转载 2012-09-04 21:39:01 · 1015 阅读 · 0 评论 -
解析字符串
题目:解析一个字符串,对字符串中重复出现的字符,只在第一次出现时保留。如:abdabbefgf-> abdefg。 思路:1,建立字符的hash表;2,构造一个与字符集一样大小的flag矩阵,全部置零。 顺序遍历每一个字符,先检查对应为是否为1,若是,则不输出,若不是,则输出,且置该位为1。注:2是1的一种构造方式。原创 2012-09-04 11:22:39 · 704 阅读 · 0 评论 -
查找子字符串
题目:查找子字符串,intstrstr( char* str, char* pattern); 思路: 1,朴素匹配O(n^2) 2,BMP算法原创 2012-09-04 11:11:42 · 1067 阅读 · 0 评论 -
把字符串转换成整数
题目:把一个字符串转换成整数,如输入“23”,则输出23。intStrToInt( char* str ); 思路:1,需要考虑的问题 输入为空指针; 只有"+,-"符号; 输入中含有非法字符; 越界出错:超过了返回值类型所能表示的数据范围原创 2012-09-04 11:03:43 · 695 阅读 · 0 评论 -
C语言字符串库函数的实现
http://www.cnblogs.com/luxiaoxun/archive/2012/09/04/2670202.html C语言字符串库函数的实现也是笔试题常考的题目,以下代码没有严格测试,只是简单的实现://字符串长度int strlen(const char *str) { assert(str != NULL); int len转载 2012-09-04 20:57:28 · 1080 阅读 · 1 评论 -
输出字符串的所有排列
题目:输出字符串的所有排列。 思路:递归方法:将该问题分解为n个相同的子问题。设str=s1s2...sn;[str] 表示str的全排列,str-sk表示str中去掉第k个字符后的字符串,则有[str] = s1[str-s1] + s2[str-s2]+...+sn[str-sn];再去求解n个子问题即原创 2012-09-04 11:39:11 · 2317 阅读 · 0 评论 -
字符串中连续最长重复子串
使用后缀数组的概念。#include #include #include const int max = 200; int scmp(const void *p, const void *q); int comlen(const char *p, const char *q); int main(void) { char c[max]; char *a[ma转载 2012-09-04 21:17:29 · 2523 阅读 · 0 评论 -
求最长公共子序列(LCS)
题目:求最长公共子序列(LCS) 思路:经典的动态规划法,c[i,j]表示Xi与Yj的最长公共子序列,其中Xi = {x1,、、、xi}Yj = {y1,、、、yj}注意:这里的子序列在原序列中可以是不连续的。原创 2012-09-04 16:30:04 · 871 阅读 · 0 评论 -
求数组的子数组和的最大值
来源:编程之美2.24一些典型的测试用例:[1,-2,3,5,-3,2] max=8[0,-2,3,5,-1,2] max =9[-2,-4,-3] max=-2这是一个动态规划问题,设当前扫描到arr[i]则summax= max( arr[i], maxendinghere, maxsofar);其中maxendinghere原创 2012-10-18 21:08:57 · 1124 阅读 · 0 评论