华为实习笔试2020.4.15

本文分享了参加华为实习笔试的经历,总结了在规定时间内高效答题的策略,包括部分完成题目以提高通过率、耐心阅读理解题意、自行编写输入代码以及简化问题解决复杂题目等技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨晚做了华为实习笔试,真的是不做不知道,做了就知道在规定时间内会出现多少问题总结如下:

1. 以前做题总是祈求做完全AC,后面才发现,全AC是比较有难度的,当你改了不能全AC的时候,你就应该做下一题的,因为算通过率的,假入有三道你都做了一部分那么加起来就是比较不错的成绩,如果其他也不会那么就做一道是可以的。

2.给的题目往往都是文字叙述,场景引入与我们平时刷题是很有区别的,需要耐心读题,理解我们可以这样就是先把例子答案输出来你就会有一部分通过率的,说不定很大一部分,只有特殊通不过,所以就是要简化条件限制做出来在添加条件,前提是你不能全部理解题意时候。

3。平时刷题是不需要输入的,而笔试的时候需要我们自己写输入,开始是很不习惯的,故需要多练习同时在java里要注意next(),nextLine(),nextInt()他们的区别及连起用的常见问题。

4.假如你都不会的时候有时候读题意一个简单输出就会有部分通过率。

  

package coding;

//代码没有全部AC
import java.util.*;

public class Main {
 public static void main(String[] args) {
   Scanner in = new Scanner(System.in);
   while (in.hasNext()) {
     String employeeNames = in.nextLine();
     //判断最后一个是否逗号结束的
     if(employeeNames.charAt(employeeNames.length()-1)==',') {
       System.out.println("error.0001");
       break;
     }else {
       String[] names = employeeNames.split(",");
       //判断是否名字合法,,这里有问题结尾符号没判断以Tom,Lucy,这种情况没判断
       boolean flag = true;
       int n = names.length;
       for(int j=0;j<names.length;j++) {
         if(n<=0 || n>=100) {
           System.out.println("error.0001");
           flag = false;
           break;
         }else {
           String  ss = names[j];
           for(int k=0;k<ss.length();k++) {
             if(k==0 && !(ss.charAt(k)>='A' && ss.charAt(k)<='Z')) {
               System.out.println("error.0001");
               flag = false;
               break;
             }else if(k>0 && !(ss.charAt(k)>='a' && ss.charAt(k)<='z')) {
               System.out.println("error.0001");
               flag = false;
               break;
             }else {
               continue;
             }
           }
         }
       }
       if(flag) {
         //循环存入集合里统计
         HashMap<String, Integer> timesMap = new HashMap<>();
         for (int i = 0; i < n; i++) {
           String name = names[i];
           if (timesMap.containsKey(name)) {
             int temp = timesMap.get(name);
             timesMap.put(name, temp + 1);
           } else {
             timesMap.put(name, 1);
           }
         }
         //判断最对票数
         int max = 0;
         for (String strK : timesMap.keySet()) {
           max = Math.max(timesMap.get(strK), max);
         }
         //统计这个最多票数有多少人
         ArrayList<String> ret = new ArrayList<>();
         for (String strK : timesMap.keySet()) {
           if (timesMap.get(strK) == max) {
             ret.add(strK);
           }
         }
         //这里对只有一个直接输出,否则需要加入名字判断规则
         if (ret.size() == 1) {
           System.out.println(ret.get(0));
         } else {
           Collections.sort(ret, new Comparator<String>() {
             @Override
             public int compare(String o1, String o2) {
               //升序排列
               return o1.compareTo(o2);
             }
           });
           System.out.println(ret.get(0));
         }
       }
     }
   }
 }
}

题二:

 

这题主要是怎么分割好,就实现样例输出,把关键字和后面字符串读入分开,并把后面字符以 ],分割并一步步取出保存

 public static void main(String[] args) {
    //部分AC
    Scanner sc = new Scanner(System.in);
    while(sc.hasNext()) {
      String key = sc.next();
      String value = sc.next();
      String[] str = value.split("],");
      int count=0;
      for (int i=0;i<str.length;i++) {
        String[] s = find(str[i]);
        if(key.equals(s[0])) {
          count++;
          System.out.print(s[1]+" ");
          System.out.print(s[2]+" ");
          System.out.print(s[3]+"\r\n");
        }
      }
      if (count==0) {
        System.out.println("FALL");
      }
    }
  }

  private static String[] find(String s) {
    if(s.charAt(s.length()-1)==']') {
      s = s.substring(0,s.length()-1);
    }
    StringBuilder sb = new StringBuilder();
    String[] stringSplit = s.split(",");
    for (int i=0;i<stringSplit.length;i++) {
      String ss = stringSplit[i];
      for (int j=0;j<ss.length();j++) {
        if(ss.charAt(j)=='[') {
          sb.append(ss.substring(0,j));
          sb.append(",");
        } else if (ss.charAt(j)=='=') {
          sb.append(ss.substring(j+1,ss.length()));
          sb.append(",");
          break;
        }
      }
    }
    sb.deleteCharAt(sb.length()-1);
    String str = sb.toString();
    String[] s1 = str.split(",");
    return s1;
  }

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值