面试题
文章平均质量分 64
daisyZH
微博:http://weibo.com/daisyzhuan
展开
-
字符串指针与字符数组的区别
1.字符串指针是指向一个连续存储空间,此空间中存放以\0结尾的字符串常量。 字符数组是存放字符的数组,它可以用来存放字符串2.定义方式不同,例如同时定义常量字符串。 char *ps="C Language"; static char st[]={"C Language"};3.对于char str[10] = "hello world!"; char *原创 2013-04-15 09:58:10 · 556 阅读 · 0 评论 -
求数组中和最大的子数组
【题目一】输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。[cpp] view plaincopy#include "stdio.h" #include "conio.h" /* 求一维数组的最大连续子数组元转载 2013-05-29 16:25:08 · 703 阅读 · 0 评论 -
编辑距离
转自:http://blog.csdn.net/fisher_jiang/article/details/2487688编辑距离问题描述当一个智能终端将一行正文更新,并用新的目标串y[1..n]来替换现存的源串X [l..m]时,可有几种方式来做这种变换:源串中的单个字符可被删除(delete);被替换 (replace);或被复制到目标串中去(copy);字符也可被插入(转载 2013-05-29 19:32:03 · 582 阅读 · 0 评论 -
字符串编辑距离
Levenshtein Distance (LD, 来文史特距离)也叫edit distance(编辑距离),它用来表示2个字符串的相似度,LD定义为需要最少多少步基本操作才能让2个字符串相等,基本操作包含3个:插入, 删除, 替换;比如,kiteen和sitting之间的距离可以这么计算: 1,kitten -- > sitten, 替换k为s;转载 2013-05-29 19:33:03 · 569 阅读 · 0 评论 -
最长回文子串
转自:http://blog.csdn.net/niushuai666/article/details/6594107描述输入一个字符串,求出其中最长的回文子串。子串的含义是:在原串连续出现的字符串片段。回文的含义是:正着看和倒着看是相同的,如abba和abbebba。在判断是要求忽略所有的标点和空格,且忽略大小写,但输出时按原样输出(首尾不要输出多余的字符串)。输入字符串长度大于等于1小转载 2013-05-29 20:01:06 · 613 阅读 · 0 评论 -
c++之ctype.h
ctype.h里的函数概况1 字符测试函数1> 函数原型均为int isxxxx(int)2> 参数为int, 任何实参均被提升成整型3> 只能正确处理处于[0, 127]之间的值2 字符映射函数1> 函数原型为int toxxxx(int)2> 对参数进行检测, 若符合范围则转换, 否则不变int tolower(int); 'A'转载 2013-05-29 19:54:27 · 1409 阅读 · 0 评论 -
判断一个串是否回文串
栈的应用——判断一个串是否是回文串 [问题描述] 判断一个串是否是回文串。 [基本要求] 由于输入的一个回文串可能无穷大,所以用string储该串。 [解题算法] 1,取得该串长度2,判断串长是否为单数,3,遍历串,将串的前半字符推进栈,4,如果串长为单数,跳过中间字符5,从栈中弹出字符与串的后半部分作比较 #include转载 2013-05-29 20:05:59 · 945 阅读 · 0 评论 -
外部排序算法整理
今天看了些排序相关的综述,里面介绍了一种外排算法——置换选择排序算法,读了之后云里雾里的。于是乎谷狗了一下,学习了学习维基百科上关于外排的介绍,感觉还不错,确实解决了心中的疑问。其中,外归并排序和置换选择排序都讲得很清楚,还提供了一些不错的链接,如Jim Gray的Sort Benchmark网站,故在博客中Mark一下,以表感谢!原文地址:http://zh.wikipedia.org/转载 2013-06-04 11:48:22 · 1678 阅读 · 0 评论 -
搜狗笔试题
转自:http://www.cnblogs.com/xulb597/archive/2012/05/24/2516682.html一个长度为n的数组a[0],a[1],...,a[n-1]。现在更新数组的名个元素,即a[0]变为a[1]到a[n-1]的积a[1]变为a[0]和a[2]到a[n-1]的积,...,a[n-1]为a[0]到a[n-2]的积。程序要求:要求具有线性复杂转载 2013-06-04 16:55:09 · 736 阅读 · 0 评论 -
一些常见的概率生成器的题目
转自:http://blog.163.com/kevinlee_2010/blog/static/16982082020120792429856/百度的一个面试题目:.已知一随机发生器,产生0的概率是p,产生1的概率是1-p,现在要你构造一个发生器, 使得它构造0和1的概率均为1/2;构造一个发生器,使得它构造1、2、3的概率均为1/3;…, 构造一个发生器,使得它构造1、转载 2013-06-05 16:19:18 · 1263 阅读 · 0 评论 -
c++之类型转换
转自:http://blog.sina.com.cn/s/blog_4a84e45b0100f57m.html关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dyn转载 2013-06-26 10:40:23 · 421 阅读 · 0 评论 -
等概率随机函数面试题总结
目录(?)[-]随机数范围扩展方法总结httpwwwcppblogcommyjfmarchive20120910190092htmlhttpblogcsdnnethackbuteer1articledetails7486704等概率随机函数面试题总结 在面试中也常考等概率随机函数的题目,所以很重要,特此整理下,资料全来自网上。1. 几道热转载 2013-09-17 16:42:47 · 1568 阅读 · 0 评论 -
KMP算法
转自:http://www.cnblogs.com/dolphin0520/archive/2011/08/24/2151846.html在介绍KMP算法之前,先介绍一下BF算法。一.BF算法BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个字符和P的第二个字符;若不相等,则比较S的第二个字符和P的第一转载 2013-09-21 17:36:41 · 635 阅读 · 0 评论 -
C++中将string类型转换为int, float, double类型
C++中将string类型转换为int, float, double类型 主要通过以下几种方式:# 方法一: 使用stringstreamstringstream在int或float类型转换为string类型的方法中已经介绍过, 这里也能用作将string类型转换为常用的数值类型。Demo:[cpp] view plaincopy转载 2013-05-29 16:20:14 · 1727 阅读 · 0 评论 -
归并排序
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可。[cpp] view plaincopy转载 2013-04-19 17:36:06 · 548 阅读 · 0 评论 -
堆排序算法 总结
转自:http://blog.csdn.net/clam_clam/article/details/6799763最近面试,老是被问到堆排序算法。回答时老是感觉思路不清楚,现在总结一下,把思路弄清楚的。1.堆排序是利用堆的特性对记录序列进行排序的一种排序方法。好的那么堆得特性是什么呢?堆得定义:堆是满足下列性质的数列{r1, r2, …,rn}:转载 2013-04-15 16:32:59 · 629 阅读 · 0 评论 -
结构体内存对齐
内存对齐: 目的:一来简化了处理器与内存之间传输系统的设计,二来可以提升读取数据的速度。 定义:许多实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数k(通常它为4或8)的倍数,这就是所谓的内存对齐,而这个k则被称为该数据类型的对齐模数(alignment modulus)。当一种类型S的对齐模数与另一种类型T的对齐模数原创 2013-04-15 09:47:23 · 519 阅读 · 0 评论 -
二叉树的非递归遍历
转自:http://www.cnblogs.com/dolphin0520/archive/2011/08/25/2153720.html 二叉树的非递归遍历 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易转载 2013-04-15 15:48:37 · 420 阅读 · 0 评论 -
C++中Struct和Class的区别
最本质的一个区别就是默认的访问控制1. 默认的继承访问权限struct是public的,class是private的。2. struct作为数据结构的实现体,它默认的数据访问控制是public的,而class作为对象的实现体,它默认的成员变量访问控制是private的3.“class”这个关键字还用于定义模板参数,就像“typename”。原创 2013-04-15 10:03:20 · 490 阅读 · 0 评论 -
c++ 虚函数的实现机制:笔记
1、c++实现多态的方法其实很多人都知道,虚函数在c++中的实现机制就是用虚表和虚指针,但是具体是怎样的呢?从more effecive c++其中一篇文章里面可以知道:是每个类用了一个虚表,每个类的对象用了一个虚指针。具体的用法如下:class A{public: virtual void f(); virtual void g();private转载 2013-04-15 10:34:43 · 401 阅读 · 0 评论 -
Linux下Fork与Exec使用
转自:http://www.cnblogs.com/hicjiajia/archive/2011/01/20/1940154.htmlLinux下Fork与Exec使用一、引言 对于没有接触过Unix/Linux操作系统的人来说,fork是最难理解的概念之一:它执行一次却返回两个值。fork函数是Unix系统最杰出的成就之一,它是七十年代UNIX早期的开发者经过长期在理论转载 2013-04-15 11:14:22 · 419 阅读 · 0 评论 -
堆排序C++实现
转自:http://anbog.diandian.com/post/2011-10-28/6314310堆排序C++实现#includeusing namespace std;template //类型不限void HeapAdjust(T A[], int a, int z){ for(int i=a,j=2*i; j转载 2013-04-15 16:44:40 · 646 阅读 · 0 评论 -
单链表的快速排序
单链表的快速排序和数组的快速排序在基本细想上是一致的,以从小到大来排序单链表为例,都是选择一个支点,然后把小于支点的元素放到左边,把大于支点的元素放到右边。 但是,由于单链表不能像数组那样随机存储,和数组的快排序相比较,还是有一些需要注意的细节:1. 支点的选取,由于不能随机访问第K个元素,因此每次选择支点时可以取待排序那部分链表的头指针。2. 遍历量表方转载 2013-04-16 18:37:02 · 577 阅读 · 0 评论 -
trie树--详解
前几天学习了并查集和trie树,这里总结一下trie。 本文讨论一棵最简单的trie树,基于英文26个字母组成的字符串,讨论插入字符串、判断前缀是否存在、查找字符串等基本操作;至于trie树的删除单个节点实在是少见,故在此不做详解。l Trie原理Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。l转载 2013-04-17 14:50:42 · 525 阅读 · 0 评论 -
C++ 反转字符串
//通过不同的方法,实现对所输入字符串的反转,可以很好地复习巩固 C++ 基础知识/*分析过程: 假设要使传递的字符串为常量const字符串,这样操作更加灵活,可直接传递字符串字面值进行反转,常见的解决方法就是,定义一个新的与传递过来字符串长度 相等的字符数组,然后进行字符串拷贝,把str字符按从左到右放置到字符数组中,然后采用循环来对字符数组中字符反转*//*第一种,采用转载 2013-04-25 17:51:37 · 667 阅读 · 0 评论 -
抓取动态页面
在ajax横行的年代,很多网页的内容都是动态加载的,而我们的小爬虫抓取的仅仅是web服务器返回给我们的html,这其中就跳过了js加载的部分,也就是说爬虫抓取的网页是残缺的,不完整的,下面可以看下博客园首页从首页加载中我们看到,在页面呈现后,还会有5个ajax异步请求,在默认的情况下,爬虫是抓取不到这些ajax生成的内容的,这时候要想获取就必须调用浏览器的内核引擎来下载这些动态页面转载 2013-04-26 11:38:02 · 716 阅读 · 0 评论 -
快速排序
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。 总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快转载 2013-04-19 17:37:25 · 410 阅读 · 0 评论 -
海量数据处理系列----C++中Bitmap算法的实现
bitmap是一个十分有用的结构。所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。 适用范围:可进行数据的快速查找,判重,删除,一般来说数据范围是int的10倍以下基本原理及要点:使用bit数组来表示某些元素是否存在,比如8位电话号码扩展:bloom fi转载 2013-11-08 13:38:56 · 1008 阅读 · 4 评论