摘要:將羅馬數(shù)字轉(zhuǎn)化為十進制數(shù)字上的一道簡單級別的題目將羅馬數(shù)字轉(zhuǎn)化為對應的十進制數(shù)字,其中羅馬數(shù)字的范圍在這題的關鍵在于了解需求,及如何將羅馬數(shù)字轉(zhuǎn)化為對應的十進制數(shù)字羅馬數(shù)字轉(zhuǎn)化為十進制數(shù)字的規(guī)則為用作數(shù)字的羅馬字母共有七個,即相同的數(shù)字連寫
將羅馬數(shù)字轉(zhuǎn)化為十進制數(shù)字
Leetcode上的一道簡單級別的題目
將羅馬數(shù)字轉(zhuǎn)化為對應的十進制數(shù)字,其中羅馬數(shù)字的范圍在1~3999
這題的關鍵在于了解需求,及如何將羅馬數(shù)字轉(zhuǎn)化為對應的十進制數(shù)字
羅馬數(shù)字轉(zhuǎn)化為十進制數(shù)字的規(guī)則為:
用作數(shù)字的羅馬字母共有七個,即Ⅰ(1),Ⅴ(5),Ⅹ(10),L(50),C(100),D(500),M(1000).
相同的數(shù)字連寫,所表示的數(shù)等于這些數(shù)相加
如果大的數(shù)字在前,小的數(shù)字在后,所表示的數(shù)等于這些數(shù)相加 如:VIII = 8,
如果小的數(shù)字在前,大的數(shù)字在后,所表示的數(shù)等于從大數(shù)減去小數(shù)。如:IX = 9
我的解答中使用了類似于鏈表的方法
創(chuàng)建兩個變量current和next分別表示當前節(jié)點和下一個節(jié)點,當當前節(jié)點和下一個節(jié)點的值不同時,則將當前temp中的值根據(jù)比較結(jié)果添加至result,并賦值temp為下一個節(jié)點的值,否則將值累加至temp
為了比較方便,我在輸入的string最后添加了一個‘O’其對應的值為0
/** * @author rale * *Given a roman numeral, convert it to an integer. *Input is guaranteed to be within the range from 1 to 3999. * */ public class RomanToInteger { public int romanToInt(String s) { //將兩個if判斷刪去后測試得到的結(jié)果性能更好 可能和測試用例有關 if(s==null || s.equals("")){ return 0; } if(s.length()==1){ return singleRomanToInt(s.charAt(0)); } s += "O"; int result = 0; char[] romanChars = s.toCharArray(); char current = romanChars[0]; char next = romanChars[1]; int temp = singleRomanToInt(current); for(int i = 0 ; inextInt){ result += temp; temp = nextInt; } } return result; } //將單個羅馬字母轉(zhuǎn)化為對應的數(shù)字 private int singleRomanToInt(char s){ int result = 0; switch(s){ case "I" : result = 1; break; case "V" : result = 5; break; case "X" : result = 10; break; case "L" : result = 50; break; case "C" : result = 100; break; case "D" : result = 500; break; case "M" : result = 1000; break; default : result = 0; break; } return result; } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/66840.html
摘要:解法目的就是把一個數(shù)組中所有為的數(shù)移動到數(shù)組的尾部,并保證其他元素相對位置不變。要求是在原數(shù)組上修改,不要額外引入其他的數(shù)組盡量減少操作次數(shù)。在小游戲中,設置了和界面一致的二維數(shù)組,數(shù)組的每一位記錄了一個數(shù)字。 地址:https://leetcode.com/problems/move-zeroes/ 應用場景說明 這個題是很Easy的一道題,它的應用場景是在我嘗試寫小游戲2048時,...
摘要:題目全部用做的,基本上每天一題的節(jié)奏。題目這里記錄自己對一些題目的思路和想法數(shù)字回文,說不能用額外的空間一下子懵逼了,第一概念就是換成字符串比較,但是感覺這樣子做就沒有意義了。找出任意兩條線段與軸組成的木桶,可以盛水最大的值。 前言 showImg(https://segmentfault.com/img/bVT2JE?w=1992&h=1310); 原文地址 無意間發(fā)現(xiàn) LeetCo...
摘要:題目要求假設有一共個數(shù)字,從左往右開始每隔一位刪除一個數(shù)字,到達最右側(cè)后,再從右往左每隔一位刪除一個數(shù)字,如此反復,直到剩下最后一個數(shù)字。由此可見,假如我們定義一個遞歸函數(shù)我們可以有來獲取結(jié)果。 題目要求 There is a list of sorted integers from 1 to n. Starting from left to right, remove the fir...
摘要:暴力法復雜度時間空間思路如果不用空間的話,最直接的方法就是選擇一個數(shù),然后再遍歷整個數(shù)組看是否有跟這個數(shù)相同的數(shù)就行了。二分法復雜度時間空間思路實際上,我們可以根據(jù)抽屜原理簡化剛才的暴力法。 Find the Duplicate Number Given an array nums containing n + 1 integers where each integer is bet...
摘要:例如題目解析題目的意思很明顯,就是把兩個數(shù)字加起來,需要考慮進位的情況。總結(jié)這個題目如果都能獨立完成,那么水平已經(jīng)可以足以應付國內(nèi)各大企業(yè)的算法面。 歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術實踐干貨哦~ 本文由落影發(fā)表 前言 LeetCode上的題目是大公司面試常見的算法題,今天的目標是拿下5道算法題: 題目1是基于鏈表的大數(shù)加法,既考察基本數(shù)據(jù)結(jié)構(gòu)的了解,又考察在處理加法過程中...
閱讀 1848·2021-11-22 15:24
閱讀 1307·2021-11-12 10:36
閱讀 3194·2021-09-28 09:36
閱讀 1837·2021-09-02 15:15
閱讀 2745·2019-08-30 15:54
閱讀 2391·2019-08-30 11:02
閱讀 2392·2019-08-29 13:52
閱讀 3539·2019-08-26 11:53