[{"data":1,"prerenderedAt":565},["ShallowReactive",2],{"\u002Fblog\u002Fcode-log-day-3":3},{"id":4,"title":5,"author":6,"body":7,"date":550,"description":551,"draft":552,"extension":553,"image":554,"language":555,"meta":556,"navigation":127,"path":557,"seo":558,"stem":559,"tags":560,"__hash__":564},"blog\u002Fblog\u002FCode Log - Day 3.md","Code Log - Day 3","Caio Prado",{"type":8,"value":9,"toc":544},"minimark",[10,15,24,29,32,38,45,275,278,523,526,530,540],[11,12,14],"h2",{"id":13},"log","Log",[16,17,18,19,23],"p",{},"Today i decided to solve a LeetCode exercise and continue to work ",[20,21,22],"code",{},"second_brain"," side project open issues.",[25,26,28],"h3",{"id":27},"leetcode","LeetCode",[16,30,31],{},"The LeetCode exercise i chose today was: Roman to Integer.\nIt requires a function that receives a string roman numeral as input to return the conversion of this roman numeral to an integer :",[33,34,35],"blockquote",{},[16,36,37],{},"Given a roman numeral, convert it to an integer.",[16,39,40,41,44],{},"To achieve this, i had associate each roman numeral character to an actual integer and then loop through each character of the input string \"retrieving\" the integer, so i could add or subtract of a ",[20,42,43],{},"num"," integer variable created to store the converted result. At first, i initialized the roman character-integer link using an java Map, but, just as i was already predicting, it would take too much runtime; and it did(7 ms).",[46,47,52],"pre",{"className":48,"code":49,"language":50,"meta":51,"style":51},"language-java shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","class Solution {\n    public int romanToInt(String s) {\n        Map\u003CCharacter,Integer> numMap = Map.of(\n            'I', 1,\n            'V', 5,\n            'X', 10,\n            'L', 50,\n            'C', 100,\n            'D', 500,\n            'M',1000\n        );\n\n        int result = 0;\n\n        for(int i = 0; i\u003C s.length(); i++){\n            int num = numMap.get(s.charAt(i));\n            if(i \u003C s.length()-1){\n                if (num == 1 && \"VX\".indexOf(s.charAt(i+1)) != -1){\n                    result -= num;\n                    continue;\n                }\n\n                else if (num == 10 && \"LC\".indexOf(s.charAt(i+1)) != -1){\n                    result -= num;\n                    continue;\n                }\n                else if (num == 100 && \"DM\".indexOf(s.charAt(i+1)) != -1){\n                    result -= num;\n                    continue;\n                }\n            }\n\n            result += num;\n\n        }\n        return result;\n    }\n}\n","java","",[20,53,54,62,68,74,80,86,92,98,104,110,116,122,129,135,140,146,152,158,164,170,176,182,187,193,198,203,208,214,219,224,229,235,240,246,251,257,263,269],{"__ignoreMap":51},[55,56,59],"span",{"class":57,"line":58},"line",1,[55,60,61],{},"class Solution {\n",[55,63,65],{"class":57,"line":64},2,[55,66,67],{},"    public int romanToInt(String s) {\n",[55,69,71],{"class":57,"line":70},3,[55,72,73],{},"        Map\u003CCharacter,Integer> numMap = Map.of(\n",[55,75,77],{"class":57,"line":76},4,[55,78,79],{},"            'I', 1,\n",[55,81,83],{"class":57,"line":82},5,[55,84,85],{},"            'V', 5,\n",[55,87,89],{"class":57,"line":88},6,[55,90,91],{},"            'X', 10,\n",[55,93,95],{"class":57,"line":94},7,[55,96,97],{},"            'L', 50,\n",[55,99,101],{"class":57,"line":100},8,[55,102,103],{},"            'C', 100,\n",[55,105,107],{"class":57,"line":106},9,[55,108,109],{},"            'D', 500,\n",[55,111,113],{"class":57,"line":112},10,[55,114,115],{},"            'M',1000\n",[55,117,119],{"class":57,"line":118},11,[55,120,121],{},"        );\n",[55,123,125],{"class":57,"line":124},12,[55,126,128],{"emptyLinePlaceholder":127},true,"\n",[55,130,132],{"class":57,"line":131},13,[55,133,134],{},"        int result = 0;\n",[55,136,138],{"class":57,"line":137},14,[55,139,128],{"emptyLinePlaceholder":127},[55,141,143],{"class":57,"line":142},15,[55,144,145],{},"        for(int i = 0; i\u003C s.length(); i++){\n",[55,147,149],{"class":57,"line":148},16,[55,150,151],{},"            int num = numMap.get(s.charAt(i));\n",[55,153,155],{"class":57,"line":154},17,[55,156,157],{},"            if(i \u003C s.length()-1){\n",[55,159,161],{"class":57,"line":160},18,[55,162,163],{},"                if (num == 1 && \"VX\".indexOf(s.charAt(i+1)) != -1){\n",[55,165,167],{"class":57,"line":166},19,[55,168,169],{},"                    result -= num;\n",[55,171,173],{"class":57,"line":172},20,[55,174,175],{},"                    continue;\n",[55,177,179],{"class":57,"line":178},21,[55,180,181],{},"                }\n",[55,183,185],{"class":57,"line":184},22,[55,186,128],{"emptyLinePlaceholder":127},[55,188,190],{"class":57,"line":189},23,[55,191,192],{},"                else if (num == 10 && \"LC\".indexOf(s.charAt(i+1)) != -1){\n",[55,194,196],{"class":57,"line":195},24,[55,197,169],{},[55,199,201],{"class":57,"line":200},25,[55,202,175],{},[55,204,206],{"class":57,"line":205},26,[55,207,181],{},[55,209,211],{"class":57,"line":210},27,[55,212,213],{},"                else if (num == 100 && \"DM\".indexOf(s.charAt(i+1)) != -1){\n",[55,215,217],{"class":57,"line":216},28,[55,218,169],{},[55,220,222],{"class":57,"line":221},29,[55,223,175],{},[55,225,227],{"class":57,"line":226},30,[55,228,181],{},[55,230,232],{"class":57,"line":231},31,[55,233,234],{},"            }\n",[55,236,238],{"class":57,"line":237},32,[55,239,128],{"emptyLinePlaceholder":127},[55,241,243],{"class":57,"line":242},33,[55,244,245],{},"            result += num;\n",[55,247,249],{"class":57,"line":248},34,[55,250,128],{"emptyLinePlaceholder":127},[55,252,254],{"class":57,"line":253},35,[55,255,256],{},"        }\n",[55,258,260],{"class":57,"line":259},36,[55,261,262],{},"        return result;\n",[55,264,266],{"class":57,"line":265},37,[55,267,268],{},"    }\n",[55,270,272],{"class":57,"line":271},38,[55,273,274],{},"}\n",[16,276,277],{},"The alternative was to use a switch statement to link the roman numerals characters to integers, and it worked so well that the runtime dropped to 2 ms.",[46,279,281],{"className":48,"code":280,"language":50,"meta":51,"style":51},"class Solution {\n    public int romanToInt(String s) {\n\n        int result = 0;\n\n        for(int i = 0; i\u003C s.length(); i++){\n            int num = s.charAt(i);\n            switch(num){\n                case 'I':\n                    num = 1;\n                    break;\n                case 'V':\n                    num = 5;\n                    break;\n                case 'X':\n                    num = 10;\n                    break;\n                case 'L':\n                    num = 50;\n                    break;\n                case 'C':\n                    num = 100;\n                    break;\n                case 'D':\n                    num = 500;\n                    break;\n                case 'M':\n                    num =1000;\n                    break;\n                default: num = 0;\n            }\n\n            if(i \u003C s.length()-1){\n                if (num == 1 && \"VX\".indexOf(s.charAt(i+1)) != -1){\n                    result -= num;\n                    continue;\n                }\n\n                else if (num == 10 && \"LC\".indexOf(s.charAt(i+1)) != -1){\n                    result -= num;\n                    continue;\n                }\n                else if (num == 100 && \"DM\".indexOf(s.charAt(i+1)) != -1){\n                    result -= num;\n                    continue;\n                }\n            }\n            result += num;\n        }\n        return result;\n    }\n}\n",[20,282,283,287,291,295,299,303,307,312,317,322,327,332,337,342,346,351,356,360,365,370,374,379,384,388,393,398,402,407,412,416,421,425,429,433,437,441,445,449,453,458,463,468,473,478,483,488,493,498,503,508,513,518],{"__ignoreMap":51},[55,284,285],{"class":57,"line":58},[55,286,61],{},[55,288,289],{"class":57,"line":64},[55,290,67],{},[55,292,293],{"class":57,"line":70},[55,294,128],{"emptyLinePlaceholder":127},[55,296,297],{"class":57,"line":76},[55,298,134],{},[55,300,301],{"class":57,"line":82},[55,302,128],{"emptyLinePlaceholder":127},[55,304,305],{"class":57,"line":88},[55,306,145],{},[55,308,309],{"class":57,"line":94},[55,310,311],{},"            int num = s.charAt(i);\n",[55,313,314],{"class":57,"line":100},[55,315,316],{},"            switch(num){\n",[55,318,319],{"class":57,"line":106},[55,320,321],{},"                case 'I':\n",[55,323,324],{"class":57,"line":112},[55,325,326],{},"                    num = 1;\n",[55,328,329],{"class":57,"line":118},[55,330,331],{},"                    break;\n",[55,333,334],{"class":57,"line":124},[55,335,336],{},"                case 'V':\n",[55,338,339],{"class":57,"line":131},[55,340,341],{},"                    num = 5;\n",[55,343,344],{"class":57,"line":137},[55,345,331],{},[55,347,348],{"class":57,"line":142},[55,349,350],{},"                case 'X':\n",[55,352,353],{"class":57,"line":148},[55,354,355],{},"                    num = 10;\n",[55,357,358],{"class":57,"line":154},[55,359,331],{},[55,361,362],{"class":57,"line":160},[55,363,364],{},"                case 'L':\n",[55,366,367],{"class":57,"line":166},[55,368,369],{},"                    num = 50;\n",[55,371,372],{"class":57,"line":172},[55,373,331],{},[55,375,376],{"class":57,"line":178},[55,377,378],{},"                case 'C':\n",[55,380,381],{"class":57,"line":184},[55,382,383],{},"                    num = 100;\n",[55,385,386],{"class":57,"line":189},[55,387,331],{},[55,389,390],{"class":57,"line":195},[55,391,392],{},"                case 'D':\n",[55,394,395],{"class":57,"line":200},[55,396,397],{},"                    num = 500;\n",[55,399,400],{"class":57,"line":205},[55,401,331],{},[55,403,404],{"class":57,"line":210},[55,405,406],{},"                case 'M':\n",[55,408,409],{"class":57,"line":216},[55,410,411],{},"                    num =1000;\n",[55,413,414],{"class":57,"line":221},[55,415,331],{},[55,417,418],{"class":57,"line":226},[55,419,420],{},"                default: num = 0;\n",[55,422,423],{"class":57,"line":231},[55,424,234],{},[55,426,427],{"class":57,"line":237},[55,428,128],{"emptyLinePlaceholder":127},[55,430,431],{"class":57,"line":242},[55,432,157],{},[55,434,435],{"class":57,"line":248},[55,436,163],{},[55,438,439],{"class":57,"line":253},[55,440,169],{},[55,442,443],{"class":57,"line":259},[55,444,175],{},[55,446,447],{"class":57,"line":265},[55,448,181],{},[55,450,451],{"class":57,"line":271},[55,452,128],{"emptyLinePlaceholder":127},[55,454,456],{"class":57,"line":455},39,[55,457,192],{},[55,459,461],{"class":57,"line":460},40,[55,462,169],{},[55,464,466],{"class":57,"line":465},41,[55,467,175],{},[55,469,471],{"class":57,"line":470},42,[55,472,181],{},[55,474,476],{"class":57,"line":475},43,[55,477,213],{},[55,479,481],{"class":57,"line":480},44,[55,482,169],{},[55,484,486],{"class":57,"line":485},45,[55,487,175],{},[55,489,491],{"class":57,"line":490},46,[55,492,181],{},[55,494,496],{"class":57,"line":495},47,[55,497,234],{},[55,499,501],{"class":57,"line":500},48,[55,502,245],{},[55,504,506],{"class":57,"line":505},49,[55,507,256],{},[55,509,511],{"class":57,"line":510},50,[55,512,262],{},[55,514,516],{"class":57,"line":515},51,[55,517,268],{},[55,519,521],{"class":57,"line":520},52,[55,522,274],{},[524,525],"hr",{},[25,527,529],{"id":528},"side-project","Side Project",[16,531,532,533,539],{},"On my {Second Brain](",[534,535,536],"a",{"href":536,"rel":537},"https:\u002F\u002Fgithub.com\u002Fcaioopr\u002Fsecond_brain",[538],"nofollow",") project, i worked on the \"Collections\" page to display the list of existing collections; however, i still need to implement the actual functionality to show the posts of a collection.",[541,542,543],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":51,"searchDepth":64,"depth":64,"links":545},[546],{"id":13,"depth":64,"text":14,"children":547},[548,549],{"id":27,"depth":70,"text":28},{"id":528,"depth":70,"text":529},"2025-01-09","Solving LeetCode's Roman to Integer in Java, and trading a Map for a faster lookup, plus more work on Second Brain.",false,"md",null,"en",{},"\u002Fblog\u002Fcode-log-day-3",{"title":5,"description":551},"blog\u002FCode Log - Day 3",[561,562,27,563],"challenge","daily-coding","nuxt.js","rjC1GPYn9dXkV7ZHrZyIGAcUvy5Gm4p1ZEstCUkqnZc",1785357636365]