華為機試程式設計題(二)
阿新 • • 發佈:2019-01-07
華為機試程式設計題分享又來啦。本次的部分題目也比較簡單,參考程式碼就不給大家了,留給大家自由發揮的餘地嘍。好了,廢話不多說,下面就進入正題嘍。
1、質數因子
題目描述
功能:輸入一個正整數,按照從小到大的順序輸出它的所有質數的因子(如180的質數因子為2 2 3 3 5 ),最後一個數後面也要有空格
輸入描述:
輸入一個long型整數
輸出描述:
按照從小到大的順序輸出它的所有質數的因子,以空格隔開。最後一個數後面也要有空格。
相信大家對於這個題目是很熟悉的,在C語言學習階段就遇到過求解某一個數的所有質數因子,那麼就可以按照當時的思路進行程式碼編寫了,屬於容易題,小編就不在這裡給出參考程式碼了。
2、合併表記錄
題目描述
資料表記錄包含表索引和數值,請對錶索引相同的記錄進行合併,即將相同索引的數值進行求和運算,輸出按照key值升序進行輸出。
輸入描述:
先輸入鍵值對的個數,然後輸入成對的index和value值,以空格隔開
輸出描述:
輸出合併後的鍵值對(多行)
對於本題,相信熟悉Java語言的小夥伴很容易想到使用一個HashMap來儲存,而且HashMap的查詢效率是很高的。參考程式碼如下,如果有更好地實現方法,可以給小編私信或評論哦。
package HUAWEI; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Scanner; public class MergeKeyValue { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); Map<Integer, Integer> map = new HashMap<>(); int i = 0; while(i < num) { ++i; int key = scanner.nextInt(); int value = scanner.nextInt(); if(!map.keySet().contains(key)) { map.put(key, value); } else { map.put(key, map.get(key)+value); } } List<Integer> list = new ArrayList<>(); for(Integer integer : map.keySet()) { list.add(integer); } Collections.sort(list); for(Integer integer : list) { System.out.println(integer + " " + map.get(integer)); } scanner.close(); } }
3、提取不重複的整數
題目描述
輸入一個int型整數,按照從右向左的閱讀順序,返回一個不含重複數字的新的整數。
輸入描述:
輸入一個int型整數
輸出描述:
按照從右向左的閱讀順序,返回一個不含重複數字的新的整數
本題可以將int的整數轉換為字串進行處理,字串提供了擷取字串、包含等方法可以很好的幫助我們處理問題。
package HUAWEI; import java.util.Scanner; public class ReturnANewInteger { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int input = scanner.nextInt(); String string = String.valueOf(input); StringBuffer buffer = new StringBuffer(); for(int i = string.length()-1; i >= 0; i--) { String s = String.valueOf(string.charAt(i)); if(!buffer.toString().contains(s)) { buffer.append(s); } } System.out.println(buffer.toString()); scanner.close(); } }
4、字元統計個數
題目描述
編寫一個函式,計算字串中含有的不同字元的個數。字元在ACSII碼範圍內(0~127)。不在範圍內的不作統計。
輸入描述:
輸入N個字元,字元在ACSII碼範圍內。
輸出描述:
輸出範圍在(0~127)字元的個數。
需要注意本題統計的字元在ASCII碼範圍0~127內,則我們可以準備一個128個元素的陣列來統計他們出現的次數。
package HUAWEI;
import java.util.Scanner;
public class HowManyASCII {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = scanner.next();
int[] array = new int[128];
int count = 0;
for(int i = 0; i < input.length(); i++) {
++array[input.charAt(i)];
}
for(int i = 0; i < array.length; i++) {
if(array[i] != 0) {
++count;
}
}
System.out.println(count);
scanner.close();
}
}
本篇又分享了4個較為容易的華為機試題目,希望大家可以給出更好的解決方法,來私信小編。華為的機試題目的前兩道題目,還都是比較容易的,是大家主要拿分的點。