欢迎访问抖客教程网!

抖客教程网

您现在的位置是:主页 > 办公课堂 > Excel教程 > Excel图表制作 >

Excel图表制作

Excel函数式编程:求右括号位置

发布时间:2023-12-06 17:25:01Excel图表制作评论
Microsoft 365中增加了许多新函数,利用这些新函数可以实现其他编程语言中的部门数据或数组哄骗能力,拓展事情表函数办理问题的新思路。本文通过一个寻找第n个左括号对应右括号位

Microsoft 365中增加了许多新函数,利用这些新函数可以实现其他编程语言中的部门数据或数组哄骗能力,拓展事情表函数办理问题的新思路。本文通过一个寻找第n个左括号对应右括号位置的例子来先容利用事情表函数模仿“栈”操纵的一种方式。

一、什么是“栈”

栈(stack)又名仓库,它是一种运算受限的线性表。限定仅在表尾举办插入和删除操纵的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除去,使其相邻的元素成为新的栈顶元素。

 Excel函数式编程:求右括号位置

比方,我们可以把序号会萃入栈,然后当切合条件时,从栈顶一个一个移除,相当于后进栈的先移出栈。

 Excel函数式编程:求右括号位置

二、Excel事情表函数模仿入栈和出栈操纵

Excel中,可以利用VSTACK函数到达增加栈顶元素的目标,比方将数字5会萃到栈顶:

 Excel函数式编程:求右括号位置

同样,操作DROP函数可以实现移除栈顶元素的目标:

 Excel函数式编程:求右括号位置

假如当前栈里只有一个元素,移除这个元素时会发生错误值:

 Excel函数式编程:求右括号位置

为了制止上述环境的呈现,我们可以给栈配置一个初始值,比方0,这样有进栈元素后再移除不会发生错误:

 Excel函数式编程:求右括号位置

三、求括号位置题目描写

下面,我们来正式说这个题目。相关原数据和描写如下图所示:

 Excel函数式编程:求右括号位置

简朴说,就是找出字符串中第n个左括号{对应的右括号}的位置。

四、解题思路阐明

因为要模仿栈的操纵,所以可以先想想一下这个栈的元素组成,为了制止错误,给栈一个初始值0,然后栈顶保存待匹配的{编号,栈底保存累计进过栈的{个数。

 Excel函数式编程:求右括号位置

然后分几种环境来处理惩罚:
1)当字符是{时,将这个{的编号,也即从左到右是第几个},插手栈顶。比方第一个{入栈时,将1加在栈顶,生成数组{1;0}。那么如何知道当前这个{是第几个{呢,因为我们维护的栈最底端会记录累计入过栈的{数量,所以要插手栈顶的{的编号就是栈底的数字+1。

2)当字符是{时尚有一步要执行,就是将当前的{是第几个插手栈底,也就是将第1步的编号加在数组最下面。比方第一个{入栈时,将1加在栈顶后,将1也加在栈底,生成数组{1;0;1}。虽然,这个步调,也可以不将编号直接会萃在数组下面增加数组长度,可以动态更新数组最后一个值为上述编号,比方将本来的初始值更新成1,然后再将1会萃在上面,形成数组{1;1},可是公式处理惩罚会长一些。每次轮回到{的时候,城市这样操纵,记录累计有几多个{入过栈。

3)当字符是}时,这个}必定是和栈顶编号的{匹配的,因为括号之间不交错。此时,会分两种环境:
第一种环境,当栈顶的编号不便是n时,将栈顶的{编号做出栈处理惩罚,意味着这个编号的{有}匹配了。
第二种环境,当栈顶的编号便是n时,意味着当前的}就是和第n个{匹配的},这时,输出当前}的位置即可。

4)当字符不是{或},维持栈稳定。

举几个简朴的例子来说明楼上的解题步调。

例1:字符串为“{}{a,{b,c}}”,n=1,功效返回2。

热心评论

评论列表