过几天就要进行华为的机试了,今儿临时抱抱佛脚,在网上找到2014届华为校招的机试题,琢磨了一会儿,贴出来记录下。
首先感谢一下Hackbuteer提供的题目:http://blog.csdn.net/hackbuteer1/article/details/11132567
对于第一题,字符过滤。最简单也是最直接的就是HASH。题目规定了输入序列只能为小写字符'a~z'。因此直接开辟一个大小为26的数组用于记录当前字符是否已经出现即可。
需要注意的问题:
1. hash数组记得初始化
2. pOutputStr为字符指针,记得在结尾‘ ’。以免stackoverflow。
保险起见,可以在函数起始对pOutputStr初始化,memset(pOutputStr,0,sizeof(pOutputStr));
第二题 字符串压缩,整理题意之后,就是将连续出现的字符进行个数统计,如果大于1,则先将重复长度输出,然后将该字符输出。
需要注意的问题:
1. 某个重复字符的长度可能超过10,甚至1000,考虑itoa。
char buffer[1000];
memset(buffer,0,sizeof(buffer));
itoa(num,buffer,10);
2. 如果某字符并未重复,即个数为1,不需要在pOutputStr中输出‘1X’, 'X'--表示该字符。
3. pOutputStr 结尾。
第三题 我的思路和Hackbuteer不太一样,我的思路倾向于流程控制,写的有点冗余。
1 void setOutput(char *pOutputStr) 2 { 3 pOutputStr[0]='0'; 4 pOutputStr[1]='