방정식 풀기

2144 단어 theabbieleetcodedsa
주어진 방정식을 풀고 문자열 'x'의 형태로 "x=#value"의 값을 반환합니다. 방정식에는 '+' , '-' 연산, 변수'x' 및 해당 계수만 포함됩니다. 방정식에 대한 해가 없는 경우 "No solution"를 반환하고 방정식에 대한 무한 해가 있는 경우 "Infinite solutions"를 반환해야 합니다.

방정식에 대한 솔루션이 정확히 하나인 경우 'x'의 값이 정수인지 확인합니다.

예 1:

입력: 방정식 = "x+5-3+x=6+x-2"
출력: "x=2"

예 2:

입력: 방정식 = "x=x"
출력: "무한 솔루션"

예 3:

입력: 방정식 = "2x=x"
출력: "x=0"

제약:
  • 3 <= equation.length <= 1000
  • equation 에는 정확히 하나의 '=' 가 있습니다.
  • equation는 선행 0이 없는 [0, 100] 범위의 절대값을 갖는 정수와 'x' 변수로 구성됩니다.

  • 해결책:

    class Solution:
        def parse(self, s):
            vals = [0, 0]
            chunk = ""
            sign = 1
            for c in s:
                if c == "+" or c == "-" or c == "s":
                    if len(chunk) > 0:
                        if chunk[-1] == "x":
                            coefficient = chunk[:-1]
                            if not coefficient:
                                coefficient = "1"
                            vals[0] += sign * int(coefficient)
                        else:
                            vals[1] += sign * int(chunk)
                        chunk = ""
                    if c == "+":
                        sign = 1
                    elif c == "-":
                        sign = -1
                else:
                    chunk += c
            return vals
    
        def solveEquation(self, equation: str) -> str:
            l, r = equation.split("=")
            lvals = self.parse(l + "s")
            rvals = self.parse(r + "s")
            numer = rvals[1] - lvals[1]
            denom = lvals[0] - rvals[0]
            if denom != 0:
                return "x={}".format(numer // denom)
            if numer != 0:
                return "No solution"
            return "Infinite solutions"
    

    좋은 웹페이지 즐겨찾기