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