第三題:明明的隨機數問題,根據題意是將輸入的資料進行去重和排序,明顯是用treeset。
第五題:進製轉換問題。本來打算一點一點寫乙個map,進行轉換,發現太過麻煩,上網查後,發現有兩個方法可以直接轉換。
字串s="0xa",十進位制是10;
方法一:integer.decode(s);即可為10;
decode可以自己分析字串從而輸出對應的10進製,
如:8進:010=>分析後為 8
10進:10=>分析後為 10
16進:#10|0x10|0x10=>分析後是 16
方法二:
ss=s.substring(2);
integer.parseint(ss,16);也可以得到10,第一行**是將0x去掉,第二行**parseint第二個引數16,是說明這個ss字串代表的是乙個16進製制的數,返回10進製。
parseint是解析乙個string表示的數的方法,即給乙個x進製的數,返回它的十進位制表示,比如parseint("kona", 27) ;
返回結果為411787。
第六題:質數因子。自己寫的辦法最後一組一直超時,是因為判斷乙個數是不是質數的時候一直從小到大判斷。而實際上我們判斷數num
是不是質數時,沒必要從2
一直嘗試到num
一樣,
此題中的大迴圈也大可不必寫乙個到num
的迴圈,寫到根號num即可,如果此時數字還沒有除數,則可判定其本身是乙個質數,沒有再除下去的必要了。還有乙個簡單的方法如下:
可以看出**中只要是因子就直接輸出了,原話中有人回覆是這樣的:(注意,num一直在變小,這就暗含了乙個現象或者說理論吧,就是從小到大試:如果乙個數已經不能整除2了,
那麼這個數肯定不能整除2的倍數;同理3也一樣,所以整個迴圈能夠保證一旦出現新的因數,其一定就是質數)
第八題:
合併表記錄,因為輸出按照key公升序輸出,不難想到用treemap,但是主要是不知道怎麼遍歷,以及乙個關鍵的函式getordefault(key,defaultvalue);這個函式當map集合中有這個key時,就使用這個key值;
如果沒有就使用預設值defaultvalue。
至於遍歷問題,用foreach遍歷,**如下:
第九題:輸出不重複的整數。我剛開始用的是hashset,但是發現輸出的順序不是插入的順序,上網查了下資料發現輸出的順序是隨機的,要想維護插入順序,需要用linkedhashset.
華為機試題目
在網上找了一些華為機試的題目,每日堅持寫 1 字元 字串與數值間的轉換 分析 int i ch 48 這個語句完成了單個字元 ch 轉化為數字並存入整型變數 i 的功能。因為字元 0 在 ascii 碼中對應了 48,後面的數值也是以 1 遞增,所以用它對應的ascii碼減去48就是這單個字元的整數...
華為機試題目整理
最近又到了招聘季了,現在也輪到我畢業了。針對華為的機試題目,我整理了一下自己寫的一部分 參考別人和自己的理解寫的,經過測試,可以執行。一 3.通過鍵盤輸入一串小寫字母 a z 組成的字串。請編寫乙個字串過濾程式,若字串中出現多個相同的字元,將非首次出現的字元過濾掉。比如字串 abacacde 過濾結...
華為2016機試題目
昨天去華為南研機試 故地重遊 沒啥感慨 題目很簡單 第一題 輸入乙個字串,輸出其中字母 數字 空格 其他字元的個數 輸入乙個字元之後 直接比較就行 邊界條件 也就是判斷是否為空 核心 如下 void countnumber char str,int numofletter,int numofnumb...