aboutsummaryrefslogtreecommitdiff
path: root/evalute_bracket_pairs_str.py
blob: 491c67c598be9fff0f53232b4a6bd96033d3a676 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 1807. Evaluate the Bracket Pairs of a String

"""
you are given a string 's' that contains some bracket pairs, with each pair
containing a non-empty key. you know the values of a wide range of keys.
thiis represented by a 2d string array 'knowledge' where each 'knowledge[i] =
[key_i, value_i]' indicates that key 'key_i' has a value of 'value_i'. you
are tasked evaluate a bracket pair that contains some key 'key_i' you will
replace 'key_i' and the bracket pair with the key's corresponding 'value_i'.
if you do not know the value of the key you will replace 'key_i' and the
bracket pair with a question mark. return the resulting string after
evaluting all of the bracket pairs.
"""


class Solution(object):
    def evaluate(self, s, knowledge):
        """
        :type s: str
        :type knowledge: List[List[str]]
        :rtype: str
        """
        d = {k: v for k, v in knowledge}
        t = s.split("(")
        ans = t[0]
        for i in range(1, len(t)):
            a, b = t[i].split(")")
            ans += d.get(a, "?") + b
        return ans


if __name__ == "__main__":
    obj = Solution()
    print(
        obj.evaluate(
            s="(name)is(age)yearsold", knowledge=[["name", "bob"], ["age", "two"]]
        )
    )
    print(obj.evaluate(s="hi(name)", knowledge=[["a", "b"]]))
    print(obj.evaluate(s="(a)(a)(a)aaa", knowledge=[["a", "yes"]]))