输出一个字符串包含8种字符试给出一算法实现字符串格式检查要求1检查4组字符是否成对例如不成对2检查成对字符是否位置正确有效例如有效无效
可以使用栈来实现字符串格式检查。
算法步骤:
- 创建一个空栈。
- 遍历字符串中的每个字符:
- 如果字符是左括号或者左尖括号,则将其压入栈中。
- 如果字符是右括号或者右尖括号,则检查栈是否为空。如果栈为空,或者栈顶元素与当前字符不匹配,则返回无效。
- 如果字符是右方括号或者右大括号,则检查栈是否为空。如果栈为空,或者栈顶元素与当前字符不匹配,则返回无效。
- 如果字符是其他字符,则继续遍历下一个字符。
- 遍历完字符串后,检查栈是否为空。如果栈为空,则返回有效;否则返回无效。
时间复杂度分析: 遍历字符串的时间复杂度是O(n),其中n是字符串的长度。而在遍历过程中,每个字符最多进行一次压栈和出栈操作,因此栈的操作复杂度是O(1)。所以整个算法的时间复杂度是O(n)。
空间复杂度分析: 栈的空间复杂度取决于字符串中的字符数量,最坏情况下是O(n)。
以下是使用Python实现的代码:
def check_string_format(s):
stack = []
for char in s:
if char in ['(', '<', '[', '{']:
stack.append(char)
elif char in [')', '>', ']', '}']:
if not stack or not is_matching(stack[-1], char):
return False
stack.pop()
return len(stack) == 0
def is_matching(left, right):
if left == '(' and right == ')':
return True
elif left == '<' and right == '>':
return True
elif left == '[' and right == ']':
return True
elif left == '{' and right == '}':
return True
return False
# 示例测试
print(check_string_format('<[]>')) # True
print(check_string_format('<[>]')) # False
运行结果: True False
原文地址: http://www.cveoy.top/t/topic/jaNQ 著作权归作者所有。请勿转载和采集!