題目描述
解題
思路:①用給的數去除每個羅馬字母代表的數,能除到則表示有乙個 該字元
②需考慮到6中特殊情況「iv」、「ix」、「xl」、「xc」、「cd」、「cm」
public
string
inttoroman
(int num)
;int
r =newint
[n.length]
;string
ro =
new;
stringbuilder roman =
newstringbuilder(""
);for(
int i =
0; i < n.length; i++)}
return roman.
tostring()
;}
以上為我自己寫的**,看過官方解題後引入知識點:貪心演算法
下為改進後**:
public
string
inttoroman
(int num)
;string
ro =
new;
stringbuilder roman =
newstringbuilder(""
);for(
int i =
0; i < n.length && num>
0; i++)}
return roman.
tostring()
;}
較官方解題優點:記憶體占用低。
原因:①使用stringbuilder物件;
②該物件使用,拼接等不建立新的物件,只在tostring()時建立乙個物件
③使用string拼接或者修改每次都建立乙個物件
⑤字串string一旦被建立就不能被修改
力扣 羅馬數字轉整數
category difficulty likes dislikes algorithms easy 62.44 1225 羅馬數字包含以下七種字元 i,v,x,l,c,d和m。字元 數值 i 1 v 5 x 10 l 50 c 100 d 500 m 1000 例如,羅馬數字 2 寫做ii,即為兩...
羅馬數字轉整數 力扣 LeetCode
題目描述 羅馬數字包含以下七種字元 i,v,x,l,c,d 和 m。字元數值i 1v5x 10l50c 100d 500m 1000 例如,羅馬數字 2寫做 ii 即為兩個並列的 1。12 寫做 xii 即為 x ii 27 寫做 xxvii,即為 xx v ii 通常情況下,羅馬數字中小的數字在大...
力扣題 羅馬數字轉整數
羅馬數字包含以下七種字元 i,v,x,l,c,d 和 m。字元 數值 i 1v 5 x 10 l 50 c 100 d 500 m 1000 例如,羅馬數字 2 寫做 ii 即為兩個並列的 1。12 寫做 xii 即為 x ii 27 寫做 xxvii,即為 xx v ii 通常情況下,羅馬數字中小...