最近笔试题整理(二)
最近笔试题整理链接(1)
算法题:二叉树遍历(人人网笔试)
有如下图所示(左)的一棵二叉树, 请设计一种遍历方式,使得按照如下方式(右)输出各个元素:(从下到上, 从右到左输出, 要求每层之间换行, 同行元素之间用tab分割,写出完整代码)
使用广度优先搜索bfs,遍历方式是从右子树开始遍历。遍历节点压栈,遍历之后出栈输出即为所需。
边界考虑:
- 如果只有一个节点?没问题
- 考虑树如果无节点
- 如果是完全二叉树,ok
- 如果是只有右孩子的二叉树,ok
- 如果只有左孩子的二叉树,ok
寻找Coder(去哪儿校招笔试题)
题目:请设计一个高效算法,再给定的字符串数组中,找到包含”Coder”的字符串(不区分大小写),并将其作为一个新的数组返回。结果字符串的顺序按照”Coder”出现的次数递减排列,若两个串中”Coder”出现的次数相同,则保持他们在原数组中的位置关系。
给定一个字符串数组A和它的大小n,请返回结果数组。保证原数组大小小于等于300,其中每个串的长度小于等于200。同时保证一定存在包含coder的字符串。
测试样例:
["i am a coder","Coder Coder","Code"],3
返回:["Coder Coder","i am a coder"]
简单思路:
两个基本操作:1. 搜索code,简单的字符串匹配;2. 根据code计数进行排序,计数排序就行,出现同频次的加入同一个队列
输出时遍历这n个排序队列
字符集合(华为笔试)
题目:输入一个字符串,求出该字符串包含的字符集合
输入描述:
每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。
输出描述:
每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出。
输入例子:
abcqweracb
输出例子:
abcqwer
简单思路
最简单的按字符的一个计数,遍历后输出;注意下边界、特殊值就好
华为面试题一直都是入门水平…没啥难度