2016年华为校招上机考试试题答案
生活随笔
收集整理的這篇文章主要介紹了
2016年华为校招上机考试试题答案
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2016年華為校招上機考試試題答案
? ?? ? ? 【轉載請注明出處】http://blog.csdn.net/guyuealian/article/details/50968368 ? ? ?華為軟件研發類都要上機考試,考試注意事項如下:?華為上機考試試題:
?題目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 stubScanner cin = new Scanner(System.in);ArrayList<Integer> al = new ArrayList<Integer>();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<Integer> 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<iostream> #include<string> using namespace std; void quickSort(vector<int>&a,int l,int r) { if(l<r){int i=l,j=r-1;int tmp=a[i];while(i<j){while(i<j&&a[j]>tmp)j--;if (i<j){a[i++]=a[j];}while(i<j&&a[i]<tmp)i++;if (i<j){a[j--]=a[i];}}a[i]=tmp;quickSort(a,l,i);quickSort(a,i+1,r);} } int main() { string str,tmpStr;getline(cin,str);vector<int>array;int len=str.size();int j=0;int i;for( i=0;i<len;){while(i<len&&str[i]!=' ')i++;while(j<i){tmpStr+=str[j];j++;}array.push_back(atoi(tmpStr.c_str()));i++;j=i;tmpStr.clear();}/* 快速排序 ; */int l=0;int r=array.size();quickSort(array,l,r);/*輸出;*/for (int k=0;k<r;){int index=k+1;while(index<r&&array[index]==array[k]){index++; }cout<<array[k]<<" ";k=index;}cout<<endl;system("pause"); } 題目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 stubScanner 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<str1.length()/2;i++){int c2 = Integer.parseInt(str1.charAt(i*2-1)+"");if(high<c2){high=c2;}}int max = 1;//��������for(int i = 1;i<=high;i++){max *= 2;}char[] crr = new char[max];for(int i = 1;i<=str1.length()/2;i++){int c2 = str1.charAt(i*2-1)-'1'+1;char c1 = str1.charAt(i*2-2);int num =1;for(int j=1;j<c2;j++){num*=2;}while(crr[num]!='\u0000'){num++;}crr[num] = c1;}String str2 = sc.nextLine();StringBuilder sb = new StringBuilder();for (char c : str2.toCharArray()){int index = 0;for(index =0;index<crr.length;index++){if(crr[index]==c){ break;}}sb.append(aa.shendu(crr,index));sb.append(' ');}String ss = sb.toString();System.out.println(ss.substring(0,ss.length()));}public int shendu(char[] crr, int i) {if(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<iostream> #include<string> 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<user_len;i++){char user_tmp=user_str[i];for(int j=0;j<len;j++){if (user_tmp==str[j]){int position=atoi(&str[++j]);cout<<maxDepth-position+1<<" ";break;}if (j==len-1){cout<<0<<" ";break;}}}cout<<endl;system("pause"); }
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生
總結
以上是生活随笔為你收集整理的2016年华为校招上机考试试题答案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TreeSet,Hashset,Set集
- 下一篇: Merge的用法