Python如何判断字符串中是否存在列表内元素的连续相邻出现
解法实现
实现思路
遍历字符串的所有相邻字符对,只要存在任意一对字符都属于给定运算符列表,就返回False;遍历完全部字符对都没有符合的情况,就返回True。
基础实现(适合初学者理解)
operators = ['+', '-', '*', '/', '='] def check_operator_adjacent(input_str): # 遍历到倒数第2位即可,防止下标越界 for idx in range(len(input_str) - 1): current_char = input_str[idx] next_char = input_str[idx + 1] # 判定两个相邻字符是否都是运算符 if current_char in operators and next_char in operators: return False return True
测试验证
# 测试用例1:存在连续运算符,返回False print(check_operator_adjacent('5+3=+2')) # 测试用例2:无连续运算符,返回True print(check_operator_adjacent('5+3-3=2/1')) # 测试用例3:存在连续运算符,返回False print(check_operator_adjacent('5+-2=0'))
优化写法(更简洁高效)
把运算符列表换成集合,in查询效率从O(n)提升到O(1),配合any()函数简化代码:
def check_operator_adjacent(input_str): operators = {'+', '-', '*', '/', '='} return not any( input_str[i] in operators and input_str[i+1] in operators for i in range(len(input_str) - 1) )
内容的提问来源于stack exchange,提问作者Nawa
相关产品推荐
相关产品推荐

