成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

leetcode12 十進(jìn)制數(shù)轉(zhuǎn)化為羅馬數(shù)字

wenyiweb / 1487人閱讀

摘要:這是羅馬數(shù)字轉(zhuǎn)為十進(jìn)制數(shù)的后序題目要求將十進(jìn)制數(shù)字轉(zhuǎn)化為羅馬數(shù)字,數(shù)值范圍是在羅馬數(shù)字轉(zhuǎn)化為十進(jìn)制數(shù)的博客中我簡單的介紹了一下如何將羅馬數(shù)字轉(zhuǎn)化為十進(jìn)制數(shù)字。

這是羅馬數(shù)字轉(zhuǎn)為十進(jìn)制數(shù)的后序
題目要求:將十進(jìn)制數(shù)字轉(zhuǎn)化為羅馬數(shù)字,數(shù)值范圍是[1,3999]
在羅馬數(shù)字轉(zhuǎn)化為十進(jìn)制數(shù)的博客中,我簡單的介紹了一下如何將羅馬數(shù)字轉(zhuǎn)化為十進(jìn)制數(shù)字。在這道題目里,我們需要進(jìn)一步了解十進(jìn)制數(shù)轉(zhuǎn)換為羅馬數(shù)字的協(xié)議

羅馬單個(gè)數(shù)字共有7個(gè),即I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000)

可以被減去的值只有I(1)、X(10)、C(100),且每個(gè)值最多只可以減去一次

左減時(shí)不可以跨位數(shù),例如99不能被表示為IC,而是XCIX

多個(gè)相同字母連續(xù)出現(xiàn)時(shí)表示相加,但是字母不能重復(fù)出現(xiàn)超過4次

綜上所述,個(gè)位上的數(shù)可以由I、V、X表示出來,同理,十位上的樹可以由X、L、C表示,百位上可以由C、D、M表示,千位上則為M(數(shù)字不超過3999)
所以可以分別對(duì)整數(shù)的每一位上的值進(jìn)行計(jì)算,得出相應(yīng)的羅馬數(shù)字值,并最后合并為最終得羅馬數(shù)字

思路一:遍歷每一位的值轉(zhuǎn)換為羅馬數(shù)字

我嘗試了兩種數(shù)據(jù)存儲(chǔ)方法,先嘗試了map,感覺性能較差,然后嘗試了array,性能的提升并不顯著

    //map
    public String intToRoman(int num) {
        Map romanIntMap = new HashMap();
        romanIntMap.put(1, "I");
        romanIntMap.put(5, "V");
        romanIntMap.put(10, "X");
        romanIntMap.put(50, "L");
        romanIntMap.put(100, "C");
        romanIntMap.put(500, "D");
        romanIntMap.put(1000, "M");
        StringBuilder finalResult = new StringBuilder();
        for(int i = 1 ; num>0 ; i*=10){
            StringBuilder result = new StringBuilder("");
            int digit = num%10;

            if(digit==0){
                
            }else if(digit<=3){
                for(int j = 0 ; j0 ; i++){
            StringBuilder result = new StringBuilder("");
            int digit = num%10;
            num /= 10;
            if(digit==0){
                continue;
            }else if(digit<=3){
                for(int j = 0 ; j
思路二:窮盡枚舉

因?yàn)轭}設(shè)中輸入羅馬數(shù)字是一定區(qū)間上的值,因此它的特殊情況是可以窮盡的
我們從個(gè)位入手來考慮每一位上較為特殊的情況

==9 : IX

==5 : V

==4 : IV

<4 : I*n

也就是說,由大至小減去后剩下的值都有對(duì)應(yīng)的羅馬數(shù)字存在

    public String intToRoman(int num) {
        int[] values = {1000,900,500,400,100,90,50,40,10,9,5,4,1};
        String[] strs = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
    
        StringBuilder sb = new StringBuilder();
    
        for(int i=0;i= values[i]) {
                num -= values[i];
                sb.append(strs[i]);
            }
        }
        return sb.toString();
    }


想要了解更多開發(fā)技術(shù),面試教程以及互聯(lián)網(wǎng)公司內(nèi)推,歡迎關(guān)注我的微信公眾號(hào)!將會(huì)不定期的發(fā)放福利哦~

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/66884.html

相關(guān)文章

  • leetcode190 Reverse Bits

    摘要:思路一比特位移動(dòng)將比特位逆轉(zhuǎn)過來也就是將十進(jìn)制數(shù)轉(zhuǎn)化為二進(jìn)制數(shù),再從右往左獲得每一位上的值,再將這個(gè)值添加至結(jié)果值中。根據(jù)分治思想,逆轉(zhuǎn)個(gè)比特位等價(jià)于分別將每個(gè)比特位進(jìn)行逆轉(zhuǎn)。 題目要求 Reverse bits of a given 32 bits unsigned integer. For example, given input 43261596 (represented in...

    趙連江 評(píng)論0 收藏0
  • leetcode190 Reverse Bits

    摘要:思路一比特位移動(dòng)將比特位逆轉(zhuǎn)過來也就是將十進(jìn)制數(shù)轉(zhuǎn)化為二進(jìn)制數(shù),再從右往左獲得每一位上的值,再將這個(gè)值添加至結(jié)果值中。根據(jù)分治思想,逆轉(zhuǎn)個(gè)比特位等價(jià)于分別將每個(gè)比特位進(jìn)行逆轉(zhuǎn)。 題目要求 Reverse bits of a given 32 bits unsigned integer. For example, given input 43261596 (represented in...

    kyanag 評(píng)論0 收藏0
  • leetcode羅馬數(shù)字開始

    摘要:將羅馬數(shù)字轉(zhuǎn)化為十進(jìn)制數(shù)字上的一道簡單級(jí)別的題目將羅馬數(shù)字轉(zhuǎn)化為對(duì)應(yīng)的十進(jìn)制數(shù)字,其中羅馬數(shù)字的范圍在這題的關(guān)鍵在于了解需求,及如何將羅馬數(shù)字轉(zhuǎn)化為對(duì)應(yīng)的十進(jìn)制數(shù)字羅馬數(shù)字轉(zhuǎn)化為十進(jìn)制數(shù)字的規(guī)則為用作數(shù)字的羅馬字母共有七個(gè),即相同的數(shù)字連寫 將羅馬數(shù)字轉(zhuǎn)化為十進(jìn)制數(shù)字 Leetcode上的一道簡單級(jí)別的題目將羅馬數(shù)字轉(zhuǎn)化為對(duì)應(yīng)的十進(jìn)制數(shù)字,其中羅馬數(shù)字的范圍在1~3999 這題的關(guān)鍵在...

    LiveVideoStack 評(píng)論0 收藏0
  • Leetcode 67:Add Binary(二進(jìn)制求和)

    摘要:給定兩個(gè)二進(jìn)制字符串,返回他們的和用二進(jìn)制表示。返回的數(shù)值是以開頭,表明返回的數(shù)值是二進(jìn)制函數(shù)用于將一個(gè)字符串或數(shù)字轉(zhuǎn)換為整型。指定為非十進(jìn)制時(shí),需以字符串形式傳入從第三個(gè)元素開始截取,忽略 (python、java)Given two binary strings, return their sum (also a binary string).The input strings a...

    chenjiang3 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<