有没有更Pythonic的方法检测字符串中同时存在相邻的'(('和'))'?
解决方案
你需要的功能可以直接用Python原生的字符串子串包含判断实现,写法非常简洁:
def check(string: str) -> str: return "true" if "((" in string and "))" in string else "false"
方案说明
你的需求本质是判断字符串中是否同时存在相邻左双括号((和相邻右双括号)),Python的in运算符已经原生支持子串存在性校验,底层有C级别的性能优化,比手动遍历字符的实现效率更高,同时不会有边界问题。
你原有的实现存在两个明显问题:
- 边界异常:输入字符串长度小于2时,直接取
text[0]、text[1]会触发索引越界报错,上述新实现不存在这个问题 - 冗余逻辑:重复判断相邻字符组合,完全可以用原生能力替代
所有你给出的测试用例都能完美匹配返回结果:
check("((a)) + b")→ truecheck("((a) + b")→ falsecheck("(a+b))")→ falsecheck("((a+b))")→ truecheck("((a)(b))")→ truecheck("(((a)))")→ truecheck("a)) + ((b")→ true
如果后续需要返回布尔值而非字符串,可以进一步简化为:
def check(string: str) -> bool: return "((" in string and "))" in string
内容的提问来源于stack exchange,提问作者Ceiun
相关产品推荐
相关产品推荐

