zoukankan      html  css  js  c++  java
  • 每天一道算法题(11)——栈的push、pop 序列

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

             例如:输入的push 序列是1、2、3、4、5,那么4、5、3、2、1 就有可能是一个pop 系列


    1.思路

         (1)假设栈顶元素等于输出指针指向元素,弹出栈顶元素并后移输出指针;

         (2)倘若不满足(1),则压栈输入指针元素,直到输入指针元素等于输出指针元素或者输出指针已经指向空。是前者情况,则分别省略压栈出栈操作,直接后移输入输出指针,若为后者,则返回false,因为此时栈顶不满足,所有输入序列已经压栈。


    2.代码

    bool decision(const char* in, const char* out){
    	if(!in||!out)
    		return false;
    	stack<char> s;
    	s.push(*in++);
    	while(!s.empty()){
    		if(s.top()==*out){
    			s.pop();
    			out++;
    		}
    		else{
    			//压栈,直到此时*in=*out或者in已经输入完毕
    		    while(in!=''&&*in!=*out)
    			   s.push(*in++);
    
    			if(*in=='')//栈顶元素不满足且in已无输入
    				return false;
    			else{//*in==*out情况
    			   in++;
    			   out++;
    			}
    		}
    	}
    	return true;
    }





  • 相关阅读:
    文件包含漏洞
    任意文件上传
    改变弱口令威胁,从意识开始
    Node.js学习笔记10--Express搭网站(2)
    Node.js学习笔记9——Express框架
    Node.js学习笔记8
    Node.js学习笔记7-文件系统
    node.js学习笔记6
    node.js学习笔记5——核心模块1
    Node.js学习4
  • 原文地址:https://www.cnblogs.com/engineerLF/p/5393037.html
Copyright © 2011-2022 走看看