python-为什么代码检测到最外面的代码)

这里的问题要求我反转()中的任何字符串.假设我的字符串为“ foo(bar(baz))blim”,则返回的结果为“ foobazrabblim”.有人帮助我完成了编码过程,但是,我仍然不明白为什么代码首先会检测到外部.

def reverseInParentheses(inputString):
    n=len(inputString)
    for i in range(n):
        if inputString[i] == "(":
            start=i          
        if inputString[i] == ")":
            end=i          
            return reverseInParentheses(inputString[:start]+
inputString[start+1:end][::-1]+inputString[end+1:n])
        return inputString

据我了解,假设我们有“ foo(bar(baz))blim”.因此,python检测到start = 3,end = 11.然后我们将函数称为reverseinparetheses,我们将得到“ foozab(rab)blim”.再次浏览该功能,新的开始= 6,结束= 10.最后,我们有“ foozabbarblim”,而不是我们期望的“ foobazrabblim”.我想知道程序如何首先检测外部“)”?

最佳答案
它没有检测到最外面的括号.它找到最里面的那对,颠倒内部,然后重复直到不再有括号.

if inputString[i] == ")":
    ....

当您击中第一个’)’时,此块会触发,并且在该阶段的起始位置将是'(‘,打开第一个’)’.这是最里面的一对.

然后您有:

return reverseInParentheses(inputString[:start]+inputString[start+1:end][::-1]+inputString[end+1:n])

这将内容从头到尾反转(最里面的对),然后调用函数,从而切断了for循环的其余部分.

如果您实际上在每一步都打印了inputString,则会得到:

foo(bar(baz))blim
foo(barzab)blim
foobazrabblim

最里面的括号正被颠倒.

相关文章

在这篇文章中,我们深入学习了XPath作为一种常见的网络爬虫技巧。XPath是一种用于定位和选择XML文档中特...
祝福大家龙年快乐!愿你们的生活像龙一样充满力量和勇气,愿你们在新的一年里,追逐梦想,勇往直前,不...
今天在爬虫实战中,除了正常爬取网页数据外,我们还添加了一个下载功能,主要任务是爬取小说并将其下载...
完美收官,本文是爬虫实战的最后一章了,所以尽管本文着重呈现爬虫实战,但其中有一大部分内容专注于数...
JSON是一种流行的数据传输格式,Python中有多种处理JSON的方式。官方的json库是最常用的,它提供了简单...
独立样本T检验适用于比较两组独立样本的均值差异,而配对T检验则适用于比较同一组样本在不同条件下的均...