Niuke.com: Huawei マシンのテスト記録


序文

この記事では主に、Huawei マシンのテスト ブラッシングプロセスの概要を記録したいと思います。


1. HJ15 は、int の正の整数がメモリに格納されている場合の 1 の数を見つけます。

ここに画像の説明を挿入
ここに画像の説明を挿入

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    
    
    public static void main(String[] args) {
    
    
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int count = 0;
        while(n > 0){
    
    
            n = n&(n-1);
            count++;
        }
        System.out.println(count);
    }
}

2. HJ10 文字数統計

重複排除統計に関係するものはすべて、ビットマップを使用して実装できます。それぞれの異なるデータを 1 ビットのバイナリで保存するだけでよいため、統計に使用されるストレージ スペースが大幅に削減されます。

import java.util.Scanner;
import java.util.BitSet;
 
public class Main {
    
    
 
    public static void main(String[] args) {
    
    
        Scanner scanner = new Scanner(System.in);
        String line = scanner.next();
        //总共有128个字符。字需要用128位
        BitSet bitSet = new BitSet(128);
        for (char c : line.toCharArray()) {
    
    
            //判断字符c是否已出现
            if (!bitSet.get(c)) {
    
    
                //未出现就设置为已出现
                bitSet.set(c);
            }
        }
        //统计有多少字符已出现过
        System.out.println(bitSet.cardinality());
    }
}

3. HJ8 マージテーブルレコード

キーポイント: キーの順序を確保するための TreeMap


import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    
    
    public static void main(String[] args) {
    
    
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        Map<Integer,Integer> res = new TreeMap<>();

        int i = 0;
        // 注意 hasNext 和 hasNextLine 的区别
        while (i < n) {
    
     // 注意 while 处理多个 case
            i++;
            int a = in.nextInt();
            int b = in.nextInt();
            if(res.containsKey(a)){
    
    
                res.put(a,res.get(a)+b);
            }else{
    
    
                res.put(a,b);
            }
        }
        for(Integer key : res.keySet()){
    
    
            System.out.println(key +" "+ res.get(key));
        }
    }
}

4. HJ17座標移動

重要なポイント: 通常のマッチング、データのフィルタリング

import java.util.*;
import java.io.*;
 
public class Main{
    
    
    public static void main(String[] args) throws IOException {
    
    
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String[] in = bf.readLine().split(";");
        int x = 0;
        int y = 0;
        for(String s : in){
    
    
            // 不满足题目给定坐标规则
            if(!s.matches("[WASD][0-9]{1,2}")){
    
    
                continue;
            }
            int val = Integer.valueOf(s.substring(1));
            switch(s.charAt(0)){
    
    
                case 'W':
                    y += val;
                    break;
                case 'S':
                    y -= val;
                    break;
                case 'A':
                    x -= val;
                    break;
                case 'D':
                    x += val;
                    break;
            }
        }
        System.out.println(x+","+y);
    }
}

5. HJ19 簡易エラー記録

正規表現解析リンクJava正規表現

キーポイント: String[] bbb = aaa.split(“\\”);

Split を使用して文字列を分割する場合、バックスラッシュ \ で文字列を分割すると、分割後に渡されるコンテンツは \\ になります。これは、最初と 3 番目のスラッシュが文字列 Yifu の変換であるため、これが書き込まれます。エスケープ後の結果は \ です。split 関数は文字列ではなく正規表現を解析します。正規表現の \ の結果は \ に対応するため、バックスラッシュを区切る場合は 4 つのバックスラッシュを記述する必要があります。

import java.io.*;
import java.util.*;
public class Main{
    
    
    public static void main(String[] args) throws IOException{
    
    
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        Map<String,Integer> map = new LinkedHashMap();
        String tstr = null;
        while((tstr = bf.readLine()) != null && !tstr.equals("")){
    
    
            String[] str = tstr.split("\\s+");
            String fname=str[0].substring(str[0].lastIndexOf("\\") + 1);
            fname = fname.substring(Math.max(fname.length()-16 ,0))+" "+str[1];
            Integer tmp = map.get(fname);
            if(tmp == null)
                map.put(fname,1);
            else
                map.put(fname, tmp+1);
        }
        int count = 0;
        for(Map.Entry<String,Integer> it : map.entrySet()){
    
    
            if(map.size() - count <= 8)
                System.out.println(it.getKey()+" "+it.getValue());
            count++;
        }
    }
}

おすすめ

転載: blog.csdn.net/qq_46119575/article/details/131809270