1. 程式人生 > >華為2017.8月筆試題

華為2017.8月筆試題

最近參加了華為的筆試題,其中有三道程式設計題,一道是跟字串有關的,另兩道偏向於數學方面,一個是拆分數字,一個是進位制轉換,筆試時間為兩個小時,最終做出了一道半。

題目如下(展示題目如有侵權與我聯絡,會刪除):

題1
題目描述
請編寫一個轉換字串的函式:將輸入字串中下標為偶數的字元連成一個新的字串輸出。
注意:
1)如果輸入字串的長度超過20, 則轉換失敗,返回”ERROR!”字串。
2)輸入字串只能由0-9數字、小寫a-z和大寫A-Z組成,如果包含其它字元,則轉換失敗,返回”ERROR!”字串。
輸入描述:
函式原型:void ConvertStr (char *str,  char* output); 


輸入:


輸入str引數為一個ASCII字串(C/C++中為0結尾的標準C字串)。
輸出描述:
輸出:


若判斷輸入為合法的字串,則輸出處理後的字串;


若輸入不合法,則輸出字串”ERROR!”;


C/C++通過output引數輸出結果,可以假定已經為output分配了足夠存放結果的記憶體;


(請注意新增字串結尾的0);


Java函式請直接通過返回值輸出結果。
示例1
輸入


cdefg22es
輸出


ceg2s


題2
[程式設計|200分] 消除重複數字
時間限制:3秒
空間限制:32768K
題目描述
給定一個正整數,給出消除重複數字以後最大的整數
輸入描述:
正整數,注意考慮長整數
輸出描述:
消除重複數字以後的最大整數
示例1
輸入


423234
輸出


432


題3
[程式設計|300分] 2~62進位制轉換
時間限制:3秒
空間限制:32768K
題目描述
將一個處於Integer型別取值範圍內的整數從指定源進位制轉換為指定目標進位制; 可指定的進位制值範圍為[2,62]; 每個數字位的可取值範圍為[0-9a-zA-Z]; 輸出字串的每一個都須為有效值;反例:"012"的百位字元即為無效值。 實現時無需考慮非法輸入。
輸入描述:
輸入為:
源進位制 目標進位制 待轉換的整數值


例子:8 16 12345670
輸出描述:
整數轉換為目標進位制後得到的值
示例1
輸入


8 16 12345670
輸出


29cbb8

其中做出的程式碼就不貼出來了,第一題我的完成時間是45分鐘,一次通過,第二題本來想著用字串讀入再存進陣列進行判斷標誌以後再進行分類選取最大值,但是發現這樣不好做,最後能得出分類但是做最大值的時候不方便。