華為機試程式設計題(一)
2019年華為校園招聘已經開啟,筆試也在如火如荼的進行中,研發崗位的小夥伴們免不了要參加華為的機試,那麼小編就來分享一下往年華為機試的題目。
1、字串最後一個單詞的長度
題目描述:計算字串最後一個單詞的長度,單詞以空格隔開
輸入描述:一行字串,非空,長度小於5000
輸出描述:整數N,最後一個單詞的長度。
思路分析:本題較為簡單,使用Java語言的split()方法可以將字串分割為字串陣列,根據下標得到字串陣列的最後一個元素,求得其長度即可。參考程式碼如下所示:
import java.util.Scanner; /** * * @author LXH * */ public class LastWordLength { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while(scanner.hasNext()) { String input = scanner.nextLine(); String[] array = input.split(" "); System.out.println(array[array.length-1].length()); } scanner.close(); } }
2、計算字元個數
題目描述:寫出一個程式,接受一個由字母和數字組成的字串,和一個字元,然後輸出輸入字串中有該字元的個數。不區分大小寫。
輸入描述:輸入一個有字母和數字以及空格組成的字串,和一個字元。
輸出描述:輸出輸入字串中含有該字元的個數。
思路分析:題目描述中有一點很重要的資訊就是:不區分大小寫,所以我們接收到字串和一個字元後,可以統一將他們轉化為小寫(或在比較的時候忽略大小寫),在對字串進行一次遍歷,得到該字元在字串中出現的次數。參考程式碼如下所示:
import java.util.Scanner; /** * * @author LXH * */ public class WhichCharHasHowMany { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while(scanner.hasNext()) { int count = 0; String input = scanner.next(); String whichChar = scanner.next(); input = input.toLowerCase(); whichChar = whichChar.toLowerCase(); for(int i = 0; i < input.length(); i++) { if(String.valueOf(input.charAt(i)).equals(whichChar)) { ++count; } } System.out.println(count); } scanner.close(); } }
3、字串分隔
題目描述:連續輸入字串,請按長度為8拆分每個字串後輸出到新的字串陣列;長度不是8的整數倍的字串請在後面補數字0,空字串不處理。
輸入描述:連續輸入字串(輸入2次,每個字串長度小於100)
輸出描述:輸出到長度為8的新的字元陣列
思路分析:本題輸入的字串有四種情況。第一:當字串長度為0,即空字串時,不予處理,繼續接收下一個字串。第二:當字串長度小於8時,在該字串後補充8 - str.length()個0。第三:當字串長度等於8時,直接將原字串輸出即可。第四:當字串的長度大於8時,先輸出若干長度為8的字串,直至剩餘字串長度不足8,在剩餘字串後補充相應的0。參考程式碼如下所示:
import java.util.Scanner; public class PrintStringWith8 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while(scanner.hasNext()) { StringBuffer buffer = new StringBuffer(); String input = scanner.next(); if(input.length() == 0) { continue; } if(input.length() < 8) { int zeroCount = 8 - input.length(); buffer.append(input); for(int i = 0; i < zeroCount; i++) { buffer.append("0"); } System.out.println(buffer.toString()); } else if(input.length() > 8) { int beginIndex = 0; while(input.length() - beginIndex > 8) { System.out.println(input.substring(beginIndex, beginIndex + 8)); beginIndex += 8; } // 若input.length() - beginIndex == 8則說明該字串的長度為8的倍數,恰好可以整分為長度為8的字串輸出 // 無需在後面追加0 int zeroCount = 8 - (input.length() - beginIndex); buffer.append(input.substring(beginIndex)); for(int i = 0; i < zeroCount; i++) { buffer.append("0"); } System.out.println(buffer.toString()); } else { System.out.println(input); } } scanner.close(); } }
本片博文是本系列的第一篇博文,所分享的三個程式設計題從難度來說還是比較簡單的,在後續的文章中小編會繼續分享華為公司的上機題目的。希望大家可以繼續支援小編哦。