2020年3月份华为笔试题


题目一

  分别输入两个非空字符串,第一个字符串可能包含tab键、回车键,第二个字符串则不包含,求第一个字符串中(忽略tab键回车键)第二个字符串出现的个数,第一个字符串中连续有两个字符串符合条件时都计入计数个数。

 如:

   输入

     第一个字符串:abb  bd

     第二个字符串:bb

   输出

     2

 

代码如下:

 1 import java.util.*;
 2 import java.util.regex.Matcher;
 3 import java.util.regex.Pattern;
 4 
 5 public class Main {
 6     public static void main(String[] args) {
 7         Scanner scanner = new Scanner(System.in);
 8         while (scanner.hasNext()) {
 9             String firstStr = scanner.nextLine();
10             firstStr = evictBlankForStr(firstStr);
11             String secondStr = scanner.nextLine();
12             if (firstStr.length() < secondStr.length()) {
13                 System.out.println(0);
14                 break;
15             }
16             int count = 0;
17             //计数
18             while (firstStr.length() >= secondStr.length()) {
19                 String temp = firstStr.substring(0, secondStr.length());
20                 if (temp.equals(secondStr)) {
21                     count++;
22                     firstStr = firstStr.substring(1);
23                 } else {
24                     firstStr = firstStr.substring(1);
25                 }
26             }
27             System.out.println(count);
28         }
29     }
30 
31     public static String evictBlankForStr(String string){
32            /*
33             * 去除第一个字符串中的空格和回车
34             * \n 回车(\u000a)
35             *  \s 空格(\u0008)
36             *
37             * */
38         Pattern p = Pattern.compile("\\s*|\n");
39         Matcher m = p.matcher(string);
40         return m.replaceAll("");
41     }
42 }

 

 题目二

  给出一个正整数,找到这个正整数中包含的最大递减数。一个数字的递减数是指相邻的数位从大到小排列的数字。如95345323,递减数有:953,95,53,53,532,32,那么最大的递减数为953。

public static Integer getMaxDescreasingNum(int input) {
        //转化为字符串
        String orignNum = input + "";
        List<Integer> list = new ArrayList<>();
        //获取所有的递减数
        for (int i = 0; i < orignNum.length(); i++) {
            StringBuffer temp = new StringBuffer();
            char start = orignNum.charAt(i);
            temp.append(start);
            for (int j = i + 1; j < orignNum.length(); j++) {
                if (orignNum.charAt(j - 1) > orignNum.charAt(j)) {
                    temp.append(orignNum.charAt(j));
                    list.add(Integer.parseInt(temp.toString()));
                } else {
                    break;
                }
            }
        }
        //获取最大递减数
        return Collections.max(list);
    }

 

我挂在最后一轮资格面试了,祝大家好运。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM