📌  相关文章
📜  成对的字符串在连接中包含“ 字符串 ”的每个字符(1)

📅  最后修改于: 2023-12-03 15:09:56.747000             🧑  作者: Mango

成对的字符串在连接中包含“字符串”的每个字符

这是一道字符串操作的题目。题目要求我们找到字符串中成对出现的字符,并且这些字符都出现在包含“字符串”的每个字符串中。

我们可以遍历字符串,用一个栈来保存左括号,遇到右括号时,弹出栈顶元素。如果栈为空或者栈顶元素不匹配,则返回False。最后,如果栈为空,说明所有左括号都有对应的右括号,返回True。

代码如下:

def is_valid(s: str) -> bool:
    stack = []
    mapping = {')': '(', '}': '{', ']': '['}
    for char in s:
        if char in mapping:
            top_element = stack.pop() if stack else '#'
            if mapping[char] != top_element:
                return False
        else:
            stack.append(char)
    return not stack

print(is_valid("()[]{}"))
# output: True

print(is_valid("([)]"))
# output: False

上面是Python的代码,时间复杂度为O(n),空间复杂度为O(n)。

在markdown中,我们可以用三个反引号括起来表示代码块,也可以用一个反引号括起来表示代码。例如:

import re

s = 'the quick brown fox jumps over the lazy dog'
result = re.findall(r'\b\w{5}\b', s)
print(result)

上面的代码表示使用正则表达式从一个字符串中找到所有长度为5的单词,结果为['quick', 'brown', 'jumps']

如果我们要在markdown中展示Python的语法高亮,可以在三个反引号后面加上Python,如下所示:

def is_valid(s: str) -> bool:
    stack = []
    mapping = {')': '(', '}': '{', ']': '['}
    for char in s:
        if char in mapping:
            top_element = stack.pop() if stack else '#'
            if mapping[char] != top_element:
                return False
        else:
            stack.append(char)
    return not stack

print(is_valid("()[]{}"))
# output: True

print(is_valid("([)]"))
# output: False

最后,我们可以在markdown中用井号表示标题,如下所示:

成对的字符串在连接中包含“字符串”的每个字符

这是一道字符串操作的题目。题目要求我们找到字符串中成对出现的字符,并且这些字符都出现在包含“字符串”的每个字符串中。

以上就是本题的解法和markdown示例。