这篇文章针对我参加的2017年华为优招笔试题,虽然上次春招进了资源池,即使不用参加笔试也能够有直接进入综合面试的机会,但是觉得自己只是满足这样的安排不思进取,让自己在录用失败后做的努力付之东流,我认为是一种懦弱的表现,人要勇于挑战才行。
1.统计单词,数字,其他字符串个数
Problem
输入:一行字符串
输出:单词个数,数字个数,其他字符串个数,之间用逗号隔开
如:abcd1234!!# 342abd%
2,2,2
Analysis
- 遍历字符串,当前字符为字母或者数字,又或者其他字符时,对应计数加一,跳过与之相同类型的字符。
- 跳过相同类型的字符的循环中要注意数组越界问题,因此按下标取对应字符时先判断下标是否合法。
Code
1 | import java.util.Scanner; |
2.词的反转
Problem
输入:一行字符串,单词之间空格可能有多个
输出:词的顺序反转后的字符串,如:we love the blue sky
sky blue the love we
Analysis
词的反转,可以根据模式\\s+
匹配空字符,使用split函数分割,使用StringBuider重新生成一个新的字符串
Code
1 | import java.util.Scanner; |
3.LISP括号配对与自定义函数
Problem
输入:一行字符串,其中括号配对
输出:输出运算结果,结果为空时输出""
如下面的五个测试用例:
输入(quote "!@#$%")
(reverse "a b c")
(search "abcdef" "cd")
(combine "abcd" "123" "adc")
(search (combine "1234567890" "abcdefgh" "1234567890") (reverse "dc"))
对应输出:"!@#$%"
"c b a"
"cdef"
"abcd123adc"
"cdefgh123456789"
Analysis
这道题没做出来,参考网上这位朋友的吧:http://www.cnblogs.com/f91og/p/7093363.html