11/28 leetcode python ローマ字変換・閉じカッコペア

 13. Roman to Integer

問題
ローマ数字は7種類の記号で表される: I、V、X、L、C、D、M。

記号 値
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
例えば、2はローマ数字でIIと書き、2つの1を足しただけである。12はXIIと書き、これは単にX+IIである。27はXXVIIと書き、これはXX+V+IIである。

ローマ数字は通常、左から右に大きいものから小さいものへと書く。しかし、4を表す数字はIIIIではない。代わりに4はIVと書く。1が5の前にあるので、それを引くと4となる。同じ原理が数字の9にも当てはまり、IXと書く。引き算が使われる例は6つある:

IをV(5)とX(10)の前に置くと4と9になる。
XをL(50)とC(100)の前に置くと、40と90になる。
CをD(500)とM(1000)の前に置くと、400と900になる。
ローマ数字が与えられたら、それを整数に変換しなさい。

image.png

class Solution:
    def romanToInt(self, s: str) -> int:
        roman={'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
        number=0
        for i in range(len(s)-1):
            if roman[s[i]] < roman[s[(i+1)]]:
                number-=roman[s[i]]
            else:
                number+=roman[s[i]]
        return number+roman[s[-1]]
  1. Valid Parentheses
    問題
    文字 '(', ')', '{', '}', '[', ']' を含む文字列 s が与えられたとき、その入力文字列が有効かどうかを判定する。

入力文字列が有効であるのは、以下の場合である:

開き括弧は、同じ種類の括弧で閉じなければならない。
開き括弧は正しい順序で閉じなければならない。
どの閉じ括弧にも、対応する同じ型の開き括弧がある。
image.png

class Solution:
    def isValid(self, s: str) -> bool:
        opcl = dict(('()','[]','{}'))
        stack = []

        for idx in s:
            if idx in '([{':
                stack.append(idx)
            elif len(stack) == 0 or idx != opcl[stack.pop()]:
                return False
        return len(stack) == 0
Next Post Previous Post
No Comment
Add Comment
comment url