【leetcode毎日一題】【2019-05-17】13.ローマ数字回転整数
2979 ワード
13.ローマ数字回転整数
アドレス:https://leetcode-cn.com/problems/roman-to-integer/submissions/
Pythonのコード:
Scalaのコード:
アドレス:https://leetcode-cn.com/problems/roman-to-integer/submissions/
: I, V, X, L,C,D M。
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
, 2 II , 1。12 XII , X + II 。 27 XXVII, XX + V + II 。
, 。 , 4 IIII, IV。 1 5 , 5 1 4 。 , 9 IX。 :
I V (5) X (10) , 4 9。
X L (50) C (100) , 40 90。
C D (500) M (1000) , 400 900。
, 。 1 3999 。
1:
: "III"
: 3
2:
: "IV"
: 4
3:
: "IX"
: 9
4:
: "LVIII"
: 58
: L = 50, V= 5, III = 3.
5:
: "MCMXCIV"
: 1994
: M = 1000, CM = 900, XC = 90, IV = 4.
Pythonのコード:
class Solution:
def romanToInt(self, s: str) -> int:
data1={"M":1000,"D":500,"C":100,"L":50,"X":10,"V":5,"I":1}
data2={"CM":900,"CD":400,"XC":90,"XL":40,"IX":9,"IV":4}
num=0
idx=0
for i in range(0,len(s)):
if idx>len(s)-1:
break
if idx+1<=len(s)-1:
if s[idx]+s[idx+1] in data2:
num=num+data2[s[idx]+s[idx+1]]
idx=idx+2
if idx>len(s)-1:
return num
else:
continue
if s[idx] in data1:
num=num+data1[s[idx]]
idx=idx+1
return num
Scalaのコード:
import util.control.Breaks._
object Solution {
def romanToInt(s: String): Int = {
val data1=scala.collection.mutable.LinkedHashMap("M"->1000,"D"->500,"C"->100,"L"->50,"X"->10,"V"->5,"I"->1)
val data2=scala.collection.mutable.LinkedHashMap("CM"->900,"CD"->400,"XC"->90,"XL"->40,"IX"->9,"IV"->4)
var num=0
var idx=0
for ( i s.length-1){
return num
}
breakable{
if (idx+1<=s.length-1){
val tmp:String=s(idx).toString+s(idx+1).toString
if (data2.contains(tmp)){
num=num+data2(tmp)
idx=idx+2
if (idx>s.length-1){
return num
}else{
break
}
}
}
if (data1.contains(s(idx).toString)){
num=num+data1(s(idx).toString)
idx=idx+1
}
}
}
return num
}
}