LeetCode算法題-Convert a Number to Hexadecimal(Java實(shí)現(xiàn))

這是悅樂書的第219次更新风瘦,第231篇原創(chuàng)

01 看題和準(zhǔn)備

今天介紹的是LeetCode算法題中Easy級別的第86題(順位題號是405)子房。給定一個(gè)整數(shù)付呕,寫一個(gè)算法將其轉(zhuǎn)換為十六進(jìn)制延曙。對于負(fù)整數(shù)芹务,使用二進(jìn)制補(bǔ)碼方法民晒。例如:

輸入:26
輸出:“1a”

輸入:-1
輸出:“ffffffff”

注意

  • 十六進(jìn)制(a-f)中的所有字母必須為小寫。

  • 十六進(jìn)制字符串不得包含額外的前導(dǎo)0锄禽。如果數(shù)字為零,則由單個(gè)零字符“0”表示;否則靴姿,十六進(jìn)制字符串中的第一個(gè)字符將不是零字符沃但。

  • 保證給定數(shù)字適合32位有符號整數(shù)的范圍。

  • 您不得使用庫提供的任何方法將數(shù)字直接轉(zhuǎn)換或者格式化為十六進(jìn)制佛吓。

本次解題使用的開發(fā)工具是eclipse宵晚,jdk使用的版本是1.8,環(huán)境是win7 64位系統(tǒng)维雇,使用Java語言編寫和測試淤刃。

02 第一種解法

直接使用包裝類Integer的toHexString方法,將num轉(zhuǎn)為16進(jìn)制字符串吱型。

public String toHex(int num) {
    return Integer.toHexString(num);
}


03 第二種解法

此解法的思路來自于String toHexString(int i)的源代碼逸贾,先將16進(jìn)制所用到的字符放入一個(gè)字符數(shù)組,從'0'到'f'依次排列,再定義一個(gè)字符串铝侵。先將num和15進(jìn)行與(&)運(yùn)算灼伤,與運(yùn)算的規(guī)則是同1為1,即將num轉(zhuǎn)為二進(jìn)制數(shù)和二進(jìn)制數(shù)1111做運(yùn)算咪鲜,得到的結(jié)果即為對應(yīng)字符數(shù)組中的第幾位字符狐赡,然后將num無符號右移4位,只要num不等于0疟丙,就一直循環(huán)計(jì)算颖侄。最后返回result。

核心思路是每次取出最右邊的四位進(jìn)行與運(yùn)算享郊。

public String toHex2(int num) {
    if (num == 0) {
        return "0";
    }
    char[] ch = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
    String result = "";
    while (num != 0) {
        result = ch[num&15] + result;
        num >>>= 4;
    }
    return result;
}


04 小結(jié)

算法專題目前已連續(xù)日更超過兩個(gè)月览祖,算法題文章86+篇,公眾號對話框回復(fù)【數(shù)據(jù)結(jié)構(gòu)與算法】拂蝎、【算法】穴墅、【數(shù)據(jù)結(jié)構(gòu)】中的任一關(guān)鍵詞,獲取系列文章合集温自。

以上就是全部內(nèi)容玄货,如果大家有什么好的解法思路、建議或者其他問題悼泌,可以下方留言交流松捉,點(diǎn)贊、留言馆里、轉(zhuǎn)發(fā)就是對我最大的回報(bào)和支持隘世!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市鸠踪,隨后出現(xiàn)的幾起案子丙者,更是在濱河造成了極大的恐慌,老刑警劉巖营密,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件械媒,死亡現(xiàn)場離奇詭異,居然都是意外死亡评汰,警方通過查閱死者的電腦和手機(jī)纷捞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來被去,“玉大人主儡,你說我怎么就攤上這事〔依拢” “怎么了糜值?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵丰捷,是天一觀的道長。 經(jīng)常有香客問我臀玄,道長瓢阴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任健无,我火速辦了婚禮荣恐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘累贤。我一直安慰自己叠穆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布臼膏。 她就那樣靜靜地躺著硼被,像睡著了一般。 火紅的嫁衣襯著肌膚如雪渗磅。 梳的紋絲不亂的頭發(fā)上嚷硫,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機(jī)與錄音始鱼,去河邊找鬼仔掸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛医清,可吹牛的內(nèi)容都是我干的起暮。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼会烙,長吁一口氣:“原來是場噩夢啊……” “哼负懦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起柏腻,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤纸厉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后五嫂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體残腌,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年贫导,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蟆盹。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡孩灯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出逾滥,到底是詐尸還是另有隱情峰档,我是刑警寧澤败匹,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏奢人。R本人自食惡果不足惜浪南,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望逼友。 院中可真熱鬧,春花似錦、人聲如沸炼七。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽豌拙。三九已至,卻和暖如春题暖,著一層夾襖步出監(jiān)牢的瞬間按傅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工胧卤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留唯绍,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓灌侣,卻偏偏與公主長得像推捐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子侧啼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容