博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
还原Stack操作
阅读量:6172 次
发布时间:2019-06-21

本文共 1478 字,大约阅读时间需要 4 分钟。

下午看到一题。给定两个int[]数组,int[] org和int[] res, 分别代表一串数字,和这串数字经过stack的push 和 pop操作之后的数字,让返回一个String, String里是stack操作的顺序, 比如 push 1, pop 1, push 2, pop 2等等。

假定没有重复数字,那么我们可以先建立一个栈,然后将org中的数字放入栈中,再用栈顶元素和结果数组中的数字进行对比,来得出什么时候push或者pop。 

大概代码如下:

import java.util.Stack;public class Solution {        public String getStackActions(int[] org, int[] res) {        if (org == null || res == null || org.length != res.length) return "";        Stack
stack = new Stack<>(); StringBuilder sb = new StringBuilder(); int i = 0, j = 0; int len = org.length; while (i < len) { if (stack.isEmpty() || stack.peek() != res[j]) { stack.push(org[i]); sb.append("Push: " + org[i]).append("|"); i++; } else { int x = stack.pop(); sb.append("Pop: " + x).append("|"); j++; } } while (!stack.isEmpty()) { int x = stack.pop(); sb.append("Pop: " + x).append("|"); } sb.setLength(sb.length() - 1); return sb.toString(); }}

 

Test Client:

public class Program {    public static void main(String[] args) {        // TODO Auto-generated method stub        int[] org = {1, 2, 3, 4, 5};        int[] res = {1, 2, 4, 5, 3};        Solution sol = new Solution();        String result = sol.getStackActions(org, res);        System.out.println(result);            }}

 

转载地址:http://avtba.baihongyu.com/

你可能感兴趣的文章
C++ XML
查看>>
windows批处理 打开exe后关闭cmd
查看>>
Flask开发系列之快速入门
查看>>
关于SaveChanges
查看>>
php7扩展开发 一 获取参数
查看>>
处女座与复读机
查看>>
Laravel 5.2数据库--迁移migration
查看>>
ExtJs Extender controls 不错的例子
查看>>
html的基础知识
查看>>
Mybatis Sql片段的应用
查看>>
突发奇想20150126
查看>>
Nginx + CGI/FastCGI + C/Cpp
查看>>
学习笔记------jsp页面与jsp标记
查看>>
DS博客作业02--线性表
查看>>
第三届ACM山东省赛I题_Chess_STL
查看>>
jQuery each和js forEach用法比较
查看>>
前端笔记-作用域链的一些理解加记录(JS高级程序设计读书笔记1)
查看>>
改造你的网站,变身 PWA
查看>>
Leetcode 142. Linked List Cycle IIJAVA语言
查看>>
网络基础5
查看>>