如何判断controller是被栈的push和pop图解过来的还是pop过来的

在想要监听view中实现这个协议;

在仩述方法中判断如果是栈的push和pop图解  做什么操作pop做什么操作,  none是没有操作默认;

好了这只不过是开发过程当中的一个小问题, 以前很少寫东西基本上都是写一些笔记, 印象笔记大家应该都有 从今天开始,我会时不时的加入一些我工作当中遇到的问题和是如何解决的,如果自己写笔记只不过是贴一些代码如果写文章既能锻炼自己的表达能力,又能提高自己的技术水准何乐而不为!

  输入两个整数序列其中一個序列表示栈的栈的push和pop图解顺序,判断另一个序列有没有可能是对应的pop顺序为了简单起见,我们假设栈的push和pop图解序列的任意两个整数都昰不相等的




  当不知道怎么做时,先看看我们充满智慧的人是如何思考的比如上面的例子,栈的push和pop图解序列叫Apop序列叫B,找出B的第┅个数字4在A中的位置一下子就找到了(这里深深鄙视电脑没有我们的好视力),4在B中第一个表明先让1、2、3、4依次进栈然后让4出栈,这樣4就是第一个了然后看B的第二个数5,再次用人类犀利的眼睛找到其在A中的位置发现在4后面,没事这表明继续把5进栈,再出栈设想洳果B的这一个不是5而是3呢?也是可以的只要出栈顶的就行。但是设想B的这个是1呢那么不行了,因为1已经在栈底部了不在栈的最表面。

  从上面的分析可以看到,我们只要确定B序列第一个数在A中的位置从这个位置把A分成3部分,上面例子分成了123和4和5这三块定义一個游标指向第一块的最后(如定义pST,那么它指向第一块的3)定义一个游标指向第三块的首个(如定义pRest,那么它指向第三块的5)然后从B嘚第二个数开始,看它是不是和pST相等相等说明这个数可以通过出栈得到,那么这个数出现在这个位置是没问题的;如果不等呢那么看咜与pRest是否相等,相等则表明这个数可以通过再进栈一个然后出栈一个得到,那么这个数在这个位置也没有问题若与pST和pRest都不等,那么这個数生错了位置错。

  其实也就是从中心向左右两边扩散看是不是和边界的数相等。问题就这样转化了代码:

11 //先根据待比较字符串的首字母进行初始化

我要回帖

更多关于 栈的push和pop图解 的文章

 

随机推荐