2016年华为校招上机考试试题答案

2016年华为校招上机考试试题答案

    
    【转载请注明出处】http://blog.csdn.net/guyuealian/article/details/50968368
     华为软件研发类都要上机考试,考试注意事项如下:
2016年华为校招上机考试试题答案_第1张图片

 华为上机考试试题:

 题目1: 输入字符串,提取字符串串中大写字母,注意字符串中可能含有空格等其他字符。
     样例输入: 9,AUStralia
     样例输出: AUS
     参考答案:
package huawei;
import java.util.*;
public class Main {
	public static void main(String args[]) {
		Scanner cin = new Scanner(System.in);
		String string = cin.nextLine();
		System.out.println(FindUpper(string));
	}
	public static String FindUpper(String str) {
		String out = "";
		char[] charArray = str.toCharArray();
		for (int i = 0; i < charArray.length; i++) {
			if (charArray[i] <= 90 && charArray[i] >= 65) {
				out = out + charArray[i];
			}
		}
		return out;
	}
}
题目2:数组排序
描述: 用户输入有符号整型数组(十进制),去掉重复值后,按照升序输出整型数组(十进制)。

    输入: 整数N,表示数组的个数;N个整数,整数之间以空格隔开
    输出: 去掉重复后,按照升序输出数组
    样例输入:4 6 3 3 9 
    样例输出:3 4 6 9
    参考答案:
package paixu;
import java.util.*;
public class Main {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner cin = new Scanner(System.in);
		ArrayList al = new ArrayList();
		String[] srr = cin.nextLine().split(" ");

		for (int i = 1; i <= Integer.parseInt(srr[0]); i++) {
			al.add(Integer.parseInt(srr[i]));
		}
		Main a = new Main();
		a.bubble(al);
	}

	public void bubble(ArrayList all) {
		int len = all.size();
		boolean flag = false;

		// 使用冒泡法,实现升序排序
		for (int i = 1; i <= len; i++) {
			for (int j = 1; j <= len - i; j++) {
				Integer a1 = all.get(j - 1);
				Integer a2 = all.get(j);
				if (a1 > a2) {// 若前面的大于后面的,这交换次序,实现升序排序;
					all.set(j - 1, a2);
					all.set(j, a1);
					flag = true;// 如果有数据交换,则flag为true
				}
			}
			if (flag == false)
				break;
		}
		StringBuilder sb = new StringBuilder();
		sb.append(all.get(0) + " ");
		for (int i = 1; i < len; i++) {
			if (all.get(i) == all.get(i - 1))
				continue;
			sb.append(all.get(i) + " ");
		}
		System.out.println(sb.toString());
	}
}
【C++参考答案】
#include
#include
using namespace std;
void quickSort(vector&a,int l,int r)
{	
	if(ltmp)j--;
			if (iarray;
	int len=str.size();
	int j=0;int i;
	for( i=0;i
题目3:给出一个字符串形式表达的二叉树,求出指定节点深度。
输入的树形结构字符串格式为:
    1、以父节点、左子树、右子树表示的二叉树;每个父节点不会超过两个子节点;
    2、树的每一个节点采用单个字母表示;树的层次采用数字表示,树根的层次为1,下一层为2,不会超过9层;
    3、字符串以“节点名称 层次数 节点名称 层次数…”的形式出现,同一个父节点下,先出现的为左子树。
    例如字符串“a1b2c2d3e3f3”生成一棵如下的树:
         a
       /    \
      b       c
     / \      / 
    d   e  f     

    节点a的深度为3,节点b的深度是2,节点f的深度是1
    输入:一行字符串,表示一个二叉树。一行字符串,一个字符一个节点,输入确保字符不会存在重复节点
    输出:指定节点的深度,如果节点不存在,返回0;整数之间用空格隔开
    例如:
    输入:a1b2c2d3e3f3
    ab
    输出:3 2
【Java参考答案】
package erchashu;
import java.util.*;
public class Main {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		String str1 = sc.nextLine();
		Main aa = new Main();
		int high = str1.charAt(str1.length()-1)-'1'+1;//�߶�
		for(int i=1;i=crr.length){
			return 0;
		}
		if(crr[i]=='\u0000'){
			return 0;
		}
		else{
			int a = shendu(crr,2*i);
			int b = shendu(crr,2*i+1);
			return (a>=b)? a+1:b+1;
		}
	}
}


【C++参考答案】
#include
#include
using namespace std;
int main()
{	
	string str,user_str;
	getline(cin,str);
	getline(cin,user_str);
	int len=str.size();
	int user_len=user_str.size();
       int maxDepth=atoi(&str[len-1]);//最大的深度;
	for (int i=0;i



你可能感兴趣的:(java开发,C,/,C++,求职面试)