当前位置:   article > 正文

年薪35万的华为机试题,你完成需要多长时间?_华为用c#机试

华为用c#机试

最近一个朋友通过了华为的面试,需要去参加华为机试,具体什么岗位我就不说了,说年薪可以达到35~40万元,当然了,拿这个年薪在华为应该算是一般水平了,但是相比社会上的其他企业,这样的工资还是蛮吸引人的,回来的时候,给我们分享了一下机试的题目。

题目描述

  给定一串字符,里面有些字符有连续出现的特点,请寻找这些连续字符串中最长的串,如果最长的串有多个,请输出ascii最小的一串?

测试字符串

  321,23322a1,12fffdddaa23

答题要求

  答题时间限制在90分钟以内,不可以上网查询,可以使用Java/Python/C#等任何语言实现。

解题思路

  从第一个字符开始,遍历循环每一个字符,利用maxBegin和maxEnd来记录当前连续出现的子字符串的起始位置,如果当前字符串长度大于历史最大字符串长度,或者两者长度一样,但当前的字符串ASCII码小于之前的,就要用当前的字符串覆盖历史最长的字符串,这里要注意最后一个字符的边界问题。

  当我这个朋友在给我们分享面试题目的时候我还在想,就这么一道题还需要90分钟吗?如果开发环境具备,半个小时肯定搞定,于是晚上回家以后,打开电脑思考编写,果然半个小时没有搞定,折腾了一个小时才搞定,具体代码如下:

  1. public class CalcFunc {
  2. public static String MaxRepeatString(String str){
  3. if(str==null||str.trim().length()==0){
  4. return "";
  5. }
  6. if(str.length()<2){
  7. return str;
  8. }
  9. int maxBegin = 0;
  10. int maxEnd = 1;
  11. char [] charString = str.toCharArray();
  12. String tempStr = "";
  13. String maxLenStr = "";
  14. for(int i=0;i<charString.length-1;i++){
  15. maxEnd = i+1;
  16. if(charString[i]==charString[i+1]){
  17. tempStr = str.substring(maxBegin, maxEnd+1);
  18. }else {
  19. tempStr = str.substring(maxBegin, maxEnd);
  20. maxBegin = maxEnd;//不相等时,改变截取字符串的开始位置
  21. }
  22. if(tempStr.length()>maxLenStr.length()){
  23. maxLenStr = tempStr;
  24. }else if(tempStr.length()==maxLenStr.length()&&maxLenStr.length()>0){
  25. if((int)(tempStr.charAt(0))<(int)(maxLenStr.charAt(0))) {
  26. maxLenStr = tempStr;
  27. }
  28. }
  29. if(maxEnd==charString.length-1){//最后一次遍历,并且
  30. if(maxLenStr.length()==1){
  31. if((int)(charString[charString.length-1])<(int)(maxLenStr.charAt(0))) {
  32. maxLenStr = String.valueOf(charString[charString.length-1]);
  33. }
  34. }
  35. }
  36. }
  37. return maxLenStr;
  38. }
  39.     while (true) {
  40. System.out.println("请输入给定的字符串!");
  41. Scanner input = new Scanner(System.in);
  42. String st = input.nextLine();
  43. System.out.println(MaxRepeatString(st));
  44.     }
  45. }

在做完上述题目以后,通过百度搜索了一下华为的机试题,发现还有其他类似的机试题,下面是我整理的几道机试题及实现方式。

一、题目一

题目描述

  在字符串中找出连续最长的数字串,并把这个串的长度返回。如果存在长度相同的连续数字串,返回最后一个连续数字串。

解题思路

  遍历该字符串每一个字符,判断当前字符是否为数字(可

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/872280
推荐阅读
相关标签
  

闽ICP备14008679号