首先要感谢, 博主Hackbuteer1。提供的关于2014年的华为面试题目。这里运行环境是windows7,eclipse.jdk为1.8.0_45。好了直接上题目、代码,及分析。

一、题目描述(60分):

通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。

比如字符串“abacacde”过滤结果为“abcde”。

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

【输入】 pInputStr: 输入字符串

lInputLen: 输入字符串长度

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

【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出

示例

输入:“deefd” 输出:“def”

输入:“afafafaf” 输出:“af”

输入:“pppppppp” 输出:“p”

main函数已经隐藏,这里保留给用户的测试入口,在这里测试你的实现函数,可以调用printf打印输出

当前你可以使用其他方法测试,只要保证最终程序能正确执行即可,该函数实现可以任意修改,但是不要改变函数原型。一定要保证编译运行不受影响。

二、题目描述(40分):

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

压缩规则:

1、仅压缩连续重复出现的字符。比如字符串”abcbc”由于无连续重复字符,压缩后的字符串还是”abcbc”。

2、压缩字段的格式为”字符重复的次数+字符”。例如:字符串”xxxyyyyyyz”压缩后就成为”3x6yz”。

要求实现函数:

void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr);

【输入】 pInputStr: 输入字符串

lInputLen: 输入字符串长度

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

【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出

示例

输入:“cccddecc” 输出:“3c2de2c”

输入:“adef” 输出:“adef”

输入:“pppppppp” 输出:“8p”

三、题目描述(50分):

通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。

输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。

补充说明:

1、操作数为正整数,不需要考虑计算结果溢出的情况。

2、若输入算式格式错误,输出结果为“0”。

要求实现函数:

void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr);

【输入】 pInputStr: 输入字符串

lInputLen: 输入字符串长度

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

【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出

示例

输入:“4 + 7” 输出:“11”

输入:“4 - 7” 输出:“-3”

输入:“9 ++ 7” 输出:“0” 注:格式错误

/** * @author ziling * 2015年8月7日 */

public class StringFilter2014 {

public static void main(String[] args) {

Scanner sca = new Scanner(System.in);

while(true){

// String s = sca.next();

//stringFilter(s)

// System.out.println(hashFilter(s));

// System.out.println(stringZip(s));

String opNum = sca.next();

String operator = sca.next();

String opNum2 = sca.next();

System.out.println(opNum + operator + opNum2);

int judge =inputJudge(opNum, operator, opNum2);

// System.out.println();

if(judge == 1){

if(operator.equals("+")){

System.out.println(temp1 + temp2);

}else System.out.println(temp1 - temp2);

}

}

}

public static int temp1, temp2;

public static int inputJudge(String num1, String operator, String num2){

try{

temp1 = Integer.parseInt(num1);

temp2 = Integer.parseInt(num2);

}catch (Exception e){

return -1;

}

if(!(operator.equals("+") || operator.equals("-"))){

return -1;

}else

return 1;

}

//这里的时间复杂度是n*n,空间复杂度是O(1);当然还可以采用哈希方法,映射到数组中,然后查询看看是否有,时间复杂哦度是n,空间复杂度是常数。

public static String stringFilter(String s){

int length = s.length();

String result="";

char[]c = s.toCharArray();

for(int i = 0; i

char temp = c[i];

for(int j = i+1; j

if(temp == c[j]){

c[j]=c[length-1];

length--;

}

}

}

//数组直接向前复制

for(int i = 0; i

result+=c[i];

}

return result;

}

//题目1的解题部分。

/*(1)这里java的char类型是16bits的,而c++是8位。注意区分。java的基本类型中有char和int两类,其实是int的精度高于char,char本质上也是一种数。 * 只是采用的编码方式不同罢了。 * 这里忍不住要说两句,本题的思想。首先是用hash来映射。直接保存第一次出现的字母。哈希函数为 字符串中的字符-'a'; * 修改于2015-09-09 * */

public static String hashFilter(String s){

StringBuilder sb = new StringBuilder();

int [] a = new int [26];

Arrays.fill(a, 0);

for(char c:s.toCharArray()){

int index = c-'a';

if(0 == hash[index]){

hash[index] = 1;

sb.append(c);

}

}

return sb.toString();

}

public static String stringZip(String s){

StringBuilder sb = new StringBuilder();

int temp=1;

for(int i = 0; i

char c = s.charAt(i);

if(c == s.charAt(i+1)){

temp ++;

if((i+1) ==s.length()-1){

sb.append(temp);

sb.append(c);

}

}else if(c !=s.charAt(i+1)){

if( temp >1){

sb.append(temp);

sb.append(c);

temp =1;

}else if((i+1) != s.length()-1){

sb.append(c);

}else {

sb.append(c);

sb.append(s.charAt(i+1));

}

}

}

return sb.toString();

}

}

华为机试题2014 java_2014届华为校园招聘机试题(java实现)相关推荐

  1. 2014年多益网络春季校园招聘机试题

    总共三道题,共两个小时的时间,题目分别是: 1.输入整型字符串,输出该整数:如:输入"345",输出345: 参考: #include<iostream> #inclu ...

  2. 2014届华为校园招聘机试题

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

  3. 2015华为校园招聘机试题一

    2015华为校园招聘机试题<一> 今天无意之间看到了2015年华为校园招聘的机试题,于是,做了下,写出来与大家共享.先看第一题: 题目如下: 按要求分解字符串,输入两个数M,N:M代表输入 ...

  4. 2014 WAP校园招聘笔试题

    2014 WAP校园招聘笔试题 Problem's Link:   http://www.doc88.com/p-6751117015483.html WAP公司笔试题 We are planning ...

  5. 2014年360校园招聘笔试题,干货分享

    2014年360校园招聘笔试题,希望对将要找工作的同学有帮助,加油,绝对干货分享!!! 具体内容见附件! 转载请注明出处:http://blog.csdn.net/happy_cheng

  6. 2014迅雷校园招聘笔试题(C++)

    2014迅雷校园招聘笔试题(C++)     这是迅雷在深圳那边招聘的笔试题!!也快到我们武汉来面试笔试了吧~~ 时间:2013-9-7 地点:北京大学深圳研究生院 技术类别:C++开发 说明:图片是 ...

  7. 2014百度校园招聘面试题

    2014百度校园招聘面试题,问了很多问题,我记住的也就这么多了. 百度2014校招笔试题 见 http://www.linuxidc.com/Linux/2013-09/90708.htm 一面: 1 ...

  8. 百度2014研发类校园招聘笔试题解答

    http://blog.csdn.net/lanxuezaipiao/article/details/42915285 先总体说下题型,共有3道简答题,3道算法编程题和1道系统设计题,题目有难有易,限 ...

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

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

最新文章

  1. 全球顶级专家为你解读:什么是真正的 DevOps?
  2. Ionic css组成(三)
  3. linux 进程 ctrl-c,ctrl-z,ctrl-d
  4. golang 时间原点 时间日期格式化
  5. 数据结构 -- 单链表
  6. 程序猿的终点?!!!
  7. unity中实现简单对象池,附教程原理
  8. jmeter压测_简单七步,快速入门 JMeter原生压测
  9. Qt之水平/垂直布局(QBoxLayout、QHBoxLayout、QVBoxLayout)
  10. 怎么把原来的墙拆掉_家装拆除不是简单的砸砸墙,它也是有技术的
  11. vc mysql query_我要使用mysql_query()这个函数,在VC中需要做什么工作?
  12. python---之super()继承,解决钻石继承难题
  13. ubuntu16.04使用ipv6
  14. 最大最小次序统计量密度函数的推导
  15. MySQL实战45讲读后感:一条SQL查询语句是如何执行的?
  16. 麒麟V10下 安装打包程序
  17. 增量式PID控制算法及仿真
  18. windows照片查看器没了_Secondary Display Photo Viewer(图片查看器)下载
  19. 理解和使用工具(二)-文件系统Heirarchy
  20. 利用Cesium加载 M3D BIM 模型

热门文章

  1. 自考计算机系统结构总结知识点,自考计算机系统结构复习资料.doc
  2. PDF中的超链接在PDF阅读器中失效问题的解决
  3. sqlserver2014链接mysql_SQL Server2014数据库开启远程连接(转载+自己实操)
  4. 华为FusionStorage分布式存储介绍及组件关系
  5. 为了忘却的纪念,也为了纪念已经忘却的那些
  6. pandas数据分析实战之apply函数应用
  7. ws550 第三方固件_华为 WS550 无线路由器固件升级
  8. 船舶运动野本模型求解
  9. matlab中ode指令,matlab自带的ballode程序
  10. cpua55和a53哪个好_OPPOA53搭载什么处理器-跑分是多少