2014校园招聘华为机试题

1、通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“abacacde”过滤结果为“abcde”。

要求实现函数格式:void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr);

pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;

代码如下:

class Solution{
public:void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr){int hash[26] = {0};int j = 0;for(int i = 0; i < lInputLen; i++){hash[*pInputStr - 'a'] ++;cout << *pInputStr << "的hash: " << hash[*pInputStr - 'a'] << endl;if(hash[*pInputStr - 'a'] == 1){pOutputStr[j++] = *pInputStr;}pInputStr++;}pOutputStr[j] = '\0';cout << pOutputStr << endl;}
};

测试代码:

int main(){const char* input = "abacacde";long len = strlen(input);char* output = (char*)malloc(sizeof(char) * (len + 1));Solution s;s.stringFilter(input, len, output);
}

2、通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串(重复次数+字母)。

函数格式:void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr);

代码如下:

class Solution2{
public:void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr){int j = 0;int cnt = 1;for(int i = 1; i <= lInputLen ; ){while(pInputStr[i] == pInputStr[i - 1]){i++;cnt++;}cout << cnt << endl;if(cnt == 1){pOutputStr[j++] = pInputStr[i - 1];}else{ //如果出现次数大于1次,有可能10以上次数,所以得处理int size = 0;char tmp[100];while(cnt > 0){tmp[size++] = cnt % 10 + '0';cnt /= 10;}for(int k = size - 1; k >= 0; k--){pOutputStr[j++] = tmp[k];}pOutputStr[j++] = pInputStr[i - 1];cnt = 1;} i++;}pOutputStr[j] = '\0';cout << pOutputStr << endl;}
};

测试代码:

int main(){const char* input = "aaabacccacddddddddddddee";char* output = (char*)malloc(sizeof(char) * (strlen(input) + 1));Solution2 s;s.stringZip(input, strlen(input), output);}

3、通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。如果输入格式错误,则输出0

函数格式:void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr);

代码如下:

<pre name="code" class="cpp">class Solution3{
public:void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr){char a[100]; //保存第一个数字的字符串char b[100]; //保存第二个数字的字符串char c;int sum;int i = 0, j = 0;while(*pInputStr != ' ' && *pInputStr != '\0'){if((*pInputStr - '0' ) > 9 || (*pInputStr - '0' ) < 0){cout << "第一个数字输入错误" << endl;cout << 0 << endl;exit(0);}a[i++] = *pInputStr;pInputStr++;}a[i] = '\0';int aa = atoi(a);cout << "aa = " << aa << endl;pInputStr++; //遇到空格后移动到空格后的一个字符,空格后应该检查是否为正负号if((*pInputStr != '+') && (*pInputStr != '-')){cout << "+-输入错误" << endl;cout << 0 << endl;exit(0);}else{c = *pInputStr++;  //此时指针++后指向符号后面的空格cout << "c = " << c << endl;}if(*pInputStr++ != ' '){//正负号后,应该检查是否再有一个空格cout << "空格输入错误" << endl;cout << 0 << endl;exit(0);}while(*pInputStr != '\0'){if((*pInputStr - '0' ) > 9 || (*pInputStr - '0' ) < 0){cout << "第二个数字输入错误" << endl;cout << 0 << endl;exit(0);}b[j++] = *pInputStr;pInputStr++;}b[j] = '\0';int bb = atoi(b);cout << "bb = " << bb << endl;if(c == '+'){sum = aa + bb;}else{sum = aa- bb;}cout << sum << endl;itoa(sum, pOutputStr, 10);cout << "输出的字符串为: " << pOutputStr << endl;}
};

测试代码:

int main(){const char* input = "100 - 52";char output[100];Solution3 s;s.arithmetic(input, 9, output);
}

2014校园招聘之一(8月华为机试题)相关推荐

  1. 腾讯2014校园招聘2013.10.26杭州笔试题

  2. 腾讯2014校园招聘软件后台开发类笔试题

    转http://www.itmian4.com/forum.php?mod=viewthread&tid=3572

  3. 华为2014校园招聘的机试题目

    华为2014校园招聘的机试题目和2013年的完全一样. 一.题目描述(60分): 通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的 ...

  4. 华为2014校园招聘合肥机试

    华为2014校园招聘合肥机试,简历投晚了,没去参加机试,题目是听参加的同学描述的,大致意思如下 第一题:整数分解,将整数n分解成不同因子的和,后一因子要比前一因子大,且最大因子要小于n,其中n< ...

  5. 2014校园招聘_百度2014校园招聘

    1.百度2014 校园招聘简介:  百度(Nasdaq 简称:BIDU) 是全球最大的中文搜索引擎,2000年1 月由李彦宏.徐勇两人 创立于北京中关村,致力于向人们提供"简单,可依赖&qu ...

  6. 百度2014校园招聘笔试面试汇总

    目 录 1. 百度笔试 2 1.1百度2014校园招聘笔试题(成都站,软件研发岗) 2 1.2  2013百度校园招聘-机器学习和数据挖掘工程师-笔试题 7 1.3  百度2014校园招聘 技术研发题 ...

  7. 暴风影音2014校园招聘笔试题目-技术D卷

    /*暴风影音2014校园招聘笔试题目-技术D卷.6. m*n的网格从左上角A点走到右下角B点,每次可走一格,只能往右或下走.输出有多少种走法和所有路线数. */ #include <cstrin ...

  8. 阿里巴巴集团2014校园招聘笔试题(9月22北京)

    阿里巴巴集团2014校园招聘笔试题 (9月22北京) (答案仅是个人见解,欢迎补充更正,谢谢) 第一部分 单选题(前10题,每题2分:后10题,每题3分.选对得满分,选错倒扣1分,不选得0分) 1.一 ...

  9. 阿里巴巴集团2014校园招聘笔试题------9-22北京 研发工程师

    转自 http://blog.sina.com.cn/s/blog_6f83fdb40101eyzw.html 阿里巴巴集团2014校园招聘笔试题---研发工程师 (9月22北京) (答案仅是个人 ...

  10. 校招c语言笔试题数组,华为校园招聘考试C语言C笔试题

    华为校园招聘考试C语言C笔试题 华为校园招聘考试C语言C++笔试题 1.static有什么用途?(请至少说明两种) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变. 2)在模块 ...

最新文章

  1. linux 安装mysql
  2. 编程人员需知的Windows平台编程的环境设置技巧
  3. C 标准库 - ctype.h之isalnum使用
  4. 板邓:wordpress建站不得不知的安全防护(二)
  5. 每次启动项目的服务,电脑竟然乖乖的帮我打开了浏览器,100行源码揭秘!
  6. mysql存储过程的多表查询
  7. Atlas与面向对象的Javascript
  8. zabbix-agent自定义监控项
  9. Java二分排序算法简易版(原创)
  10. 浙大PAT乙级练习1001
  11. VisualEffectGraph概述
  12. (以三星S8为例)安卓全面屏手势设置教程
  13. Alexa, Stop Spying on Me!“: Speech Privacy Protection Against Voice Assistants
  14. 13,猜数字游戏,我有一个数,请您猜猜是多少?
  15. Java回炉学习(七)
  16. oracle grant all语句,Oracle 生成批量 Grant 语句的 SQL
  17. 焦深(depth of focus)
  18. 我的世界1.13 mod制作——简单的方块(五)
  19. mysql57是什么_关于mysql57的详细介绍
  20. 谁爱Internet标签?谁不需要?

热门文章

  1. DataFrame切片
  2. python 声音指纹识别,Python-samp中的Dejavu音频指纹识别
  3. 2. 确定地球与金星之间的距离 天文学家在1914年8月份的7次观测中,测得地球与金星之间距离(单位:米),并取其常用对数值,与日期的一组历史数据如下表:
  4. 中国Linux内核开发者大会
  5. jzoj3339. wyl8899和法法塔的游戏
  6. 七问个税改革:工薪阶层为何感觉税负重
  7. Ubuntu 20.04使用微信 (亲测有效)
  8. 德州大学计算机系郭小虎2021,2021美国德州农工大学PhD项目
  9. python100天从新手到大师下载_GitHub - chenqiyi/Python-100-Days: Python - 100天从新手到大师...
  10. 前端找实习岗的7条建议