笔试面试题
文章平均质量分 72
默伊清风
这个作者很懒,什么都没留下…
展开
-
一个字符串过滤程序
通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“abacacde”过滤结果为“abcde”。要求实现函数: void stringFilter( const char *pInputStr, long lInputLen, char* pOutputStr );原创 2014-09-21 01:10:32 · 1033 阅读 · 0 评论 -
c++常见面试题30道
1.new、delete、malloc、free关系delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之转载 2014-10-03 16:49:12 · 712 阅读 · 0 评论 -
C++STL常见面试题
1.C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等2.标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为R转载 2014-10-03 17:45:18 · 965 阅读 · 0 评论 -
求三个排序数组的交集
方法一:原创 2014-10-03 23:53:13 · 867 阅读 · 0 评论 -
大小端模式
小字节序:(比如x86体系) 数据的低字节放在低地址处,比如一个整型数0x12345678,在内存中的 分布为: ----------- | 78 | xxxx_0000 ----------- | 5原创 2014-10-04 01:31:30 · 550 阅读 · 0 评论 -
C语言可变参数函数的实现
这道题的关键是理解函数参数的压栈顺序:1、函数的参数是从右到左压栈;2、栈的生长方向是从上到下(即从高地址往低地址)3、printf(char *fmt,...) fmt 是放在栈顶(最低地址),第二个参数是高一个地址,4、第二个参数的获取方法是 (char *)&fmt + sizeof(fmt) ,这个就是第二个参数的地址,第二个参数是什么类型就用什么类型取原创 2014-10-04 00:16:21 · 682 阅读 · 0 评论 -
A、B两个整数集合,设计一个算法求他们的交集,尽可能的高效
思路1:排序法 对集合A和集合B进行排序(升序,用快排,平均复杂度O(N*logN)),设置两个指针p和q,同时指向集合A和集合B的最小值,不相等的话移动*p和*q中较小值的指针,相等的话同时移动指针p和q,并且记下相等的数字,为交集的元素之一,依次操作,直到其中一个集合没有元素可比较为止。 优点:操作简单,容易实现。 缺点:使用的排序算法不当,会耗费大量的时间,比如转载 2014-10-12 23:38:41 · 1361 阅读 · 0 评论 -
c++中strstr函数的几种实现方法
函数说明:包含文件:string.h函数名: strstr函数原型:extern char *strstr(char *str1, char *str2);功能:从字符串str1中查找是否有字符串str2, 如果有,从str1中的str2位置起,返回str1的指针,如果没有,返回null。返回值:返回该位置的指针,如找不到,返回空指针。原创 2014-10-04 15:42:21 · 5661 阅读 · 0 评论 -
输出字符串各个小写字母对应个数
#include #include using namespace std;void CalcLowWord_Count(char *str){ int max = 0; int count[26] = {0}; int flag = 0; int flag2 = 0; assert(str); for(int i = 0; str[i] != '\0'; ++i) {原创 2014-11-02 01:15:17 · 1183 阅读 · 0 评论 -
把一个有序整数数组放到二叉树
对于有序数组,取中间节点作为根节点,将数组分成两部分,对数组的两部分递归构建左右子树原创 2014-10-18 01:15:18 · 1037 阅读 · 0 评论 -
二叉树所有根到叶子节点路径打印
思路:如果二叉树根结点buweikong原创 2014-10-18 01:22:31 · 2213 阅读 · 0 评论 -
判断一个链表是否有环
给定一个单链表,只给出头指针h:1、如何判断是否存在环?2、如何知道环的长度?3、如何找出环的连接点在哪里?4、带环链表的长度是多少? 解法:1、对于问题1,使用追赶的方法,设定两个指针slow、fast,从头指针开始,每次分别前进1步、2步。如存在环,则两者相遇;如不存在环,fast遇到NULL退出。2、对于问题2,记录下问题1的碰转载 2014-10-18 01:48:05 · 699 阅读 · 0 评论 -
C++中构造函数和析构函数避免调用虚函数的问题
一、构造函数避免调用虚函数的问题在构造函数中调用虚成员函数,虽然这是个不很常用的技术,但研究一下可以加深对虚函数机制及对象构造过程的理解。这个问题也和一般直观上的认识有所差异。先看看下面的两个类定义。struct C180{ C180() { foo(); this->foo(); } virtual foo() { cout << "<< C180.foo t转载 2014-11-07 00:43:20 · 701 阅读 · 0 评论 -
求两个排序数组的交集
题目: 有两个数组a{1,5,8,10,14,15,17,18,20,22,24,25,28}和b{2,4,6,8,10,12},如何求出他们之间的交集?要求效率越高越好,数组都是从小到大排序好的。此题解法的详细说明可以参考侯捷的《STL源码剖析》书中第333页。此解法与论坛上说给出的解法相同。原创 2014-10-02 23:04:59 · 1193 阅读 · 0 评论 -
将一个英文句子单词顺序逆置(LeetCode | Reverse Words in a String)
题目:Given an input string, reverse the string word by word.For example,Given s = "the sky is blue",return "blue is sky the".原创 2014-10-02 15:07:53 · 5022 阅读 · 0 评论 -
一个字符串压缩程序
通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。压缩规则: 1、仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc"。 2、压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压原创 2014-09-21 00:30:50 · 1791 阅读 · 0 评论 -
编写函数求两个整数 a 和 b 之间的较大值。要求不能使用if, while, switch, for, ?: 以及任何的比较语句
以下介绍几种程序设计:原创 2014-09-13 22:28:37 · 2551 阅读 · 0 评论 -
两个字符串 char* a, char* b,输出b在a中的位置次序.
/*两个字符串 char* a, char* b,输出b在a中的位置次序.void output_postion(const char* a, const char* b);如:a = "abdbcc" b = "abc" b 在 a 中的位置次序为 014 015 034 035 这个问题和八皇后问题类似,需要用到递归回溯方法。当检测完字符串b中的c字符时要回溯原创 2014-09-14 01:22:51 · 1390 阅读 · 0 评论 -
行列递增序列的二维数组查找
//题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。// 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。//解题思路:从二维数组的右上角的元素开始判断,因为此元素是它所在行的最大数,//是它所在的列的最小数。如果它等于要查找的数字,则查找过程结束。//如果它大于要查找的数字,则可以排除它所在的列原创 2014-09-25 00:11:40 · 980 阅读 · 0 评论 -
找出带环单向链表的环入口(交点)
其实这个问题已经被问烂了,但是之前没有想透,今天算是解决得差不多。找环的入口这个问题,其实是建立在另外一个问题之上的——判断单向链表是否有环土方法很多,但是比较好的目前就那么一个:一开始设置两个指针都指向表头,其中一个每次(一步)前进一个节点的叫p1,另外那个每次(一步)前进两个节点的叫p2 。p1和p2同时走,当其中有一个遇到null,就证明链表没有环。如何某个时刻(假设走了n步转载 2014-09-28 17:26:02 · 550 阅读 · 0 评论 -
memcpy,memmove,strcpy,strcat等系列函数的实现(一)
一、memcpy函数: 1、定义函数: void *memcpy(void *dest, const void *src, size_t n)函数说明: memcpy()用来拷贝src所指的内存内容前n个字节到dest所指的内存地址上。 与strcpy()不同的是,memcpy()会完整的复制n个字节,不会因为遇到字符串结束'\0'而结束注: memcp原创 2014-10-07 00:17:33 · 959 阅读 · 0 评论 -
基数排序
编程论到极致,核心非代码,即思想。所以,真正的编程高手同时是思想独到及富有智慧(注意与聪明区别)的人。每一个算法都是一种智慧的凝聚或萃取,值得我们学习从而提高自己,开拓思路,更重要的是转换思维角度。其实,我们大多数人都活在“默认状态”下。没有发觉自己的独特可设置选项-----思想。言归正传(呵呵!恢复默认状态),以下学习基数排序。【1】基数排序以前研转载 2014-10-25 01:05:53 · 590 阅读 · 0 评论 -
memcpy,memmove,strcpy,strcat等系列函数的实现(二)
、strcat函数: 1、定义函数:extern char *strcat(char *dest,char *src);把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。注:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。2、函数用法实例(略):3、函数实现:#includ原创 2014-10-07 13:17:15 · 719 阅读 · 0 评论 -
简单的实现atoi函数
原型:int atoi(const char *nptr);原创 2014-10-08 10:41:24 · 1023 阅读 · 0 评论 -
简单的实现itoa函数
一、char *itoa( int value, char *string,int radix);原创 2014-10-09 00:32:26 · 661 阅读 · 0 评论 -
哈希表对字符串的高效处理
哈希表对字符串的高效处理 哈希表(散列表)是一种非常高效的查找数据结构,在原理上也与其他的查找不尽相同,它回避了关键字之间反复比较的繁琐,而是直接一步到位查找结果。当然,这也带来了记录之间没有任何关联的弊端。应该说,散列表对于那些查找性能要求高,记录之间关系无要求的数据有非常好的适用性。注意对散列函数的选择和处理冲突的方法。 Hash表是使用 O(1)转载 2014-10-11 00:09:54 · 845 阅读 · 0 评论 -
cache 的设计与实现--转载
本文整理自一下两篇博客:http://my.oschina.net/ScottYang/blog/298727http://my.oschina.net/u/866190/blog/188712Cache简介: Cache(高速缓存), 一个在计算机中几乎随时接触的概念。CPU中Cache能极大提高存取数据和指令的时间,让整个存储器(Cache+内存)既有Cache的高速度,转载 2014-10-01 20:52:04 · 571 阅读 · 0 评论 -
统计单词个数———有穷状态机编程
有穷状态机的形式定义有穷状态机是一个五元组 (Q,Σ,δ,q0,F),其中:Q是一个有穷集合,称为状态集。Σ是一个有穷集合,称为字母表。δ: Q xΣQ称为状态转移函数。q0 是初始状态。F 是接受状态集。教科书上是这样定义有穷自动机的,这个形式定义精确的描述了有穷状态机的含义。但是大部分人(包括我自己)第一次看到它时,反复的读上几遍,仍然不知道它在说什么。幸原创 2014-11-07 00:23:04 · 2894 阅读 · 0 评论