1. 程式人生 > >華為機試程式設計題(一)

華為機試程式設計題(一)

        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();
	}
}

        本片博文是本系列的第一篇博文,所分享的三個程式設計題從難度來說還是比較簡單的,在後續的文章中小編會繼續分享華為公司的上機題目的。希望大家可以繼續支援小編哦。