Skip to content

一家互联网公司的面试邀请题目 逆波兰表达式 实现 大数的 +-*/ sqrt 撤销

License

Notifications You must be signed in to change notification settings

wenchaomartin/RPN

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RPN 的思路分析和问题汇总

RPN 是什么?

  1. RPN(数据结构中的逆波兰表达式) 对栈这种数据结构练习, 比 中缀表达式更好 没有operator优先级和小括号的进栈出栈
  2. 邓俊辉老师视频有对RPN的介绍:看完基本思路就很明确了

解题思路

  1. 数字直接进栈,遇到操作符 则之前的数字出栈在与操作符计算 压栈
    1. 解决undo 撤销 问题
    2. 遇到sqrt 需要运用 BigDecimal

undo

undo 思路来源于Memento and command pattern

Memento java

```
// 将 myObject 包装了一下
public class Memento {

    MyObject myObject;

    public MyObject getState() {
        return myObject;
    }

    public void setState(MyObject myObject){
        this.myObject = myObject;
    }
}

  // Command java
  public abstract class Command {
  
      MyObject myObject; //memnto 中 myobject的镜象
  
      Memento memento;
  
      public abstract void execute(); // 当 命令执行时 , 将新的myObject 给 memento
  
      public abstract void undo();  //将旧的 myobject 给 memento
  }

```
  1. 每个命令执行要进栈 undo 栈就要 pop 执行 undo

    需要注意的是 memento 中的 myObject 与 command 中的 myObject

    deep copy offer three methods deep copy

参考资料

  1. https://stackoverflow.com/questions/7374545/the-undo-and-redo-implementation-in-java
  2. https://www.codeproject.com/Articles/8303/Using-the-Command-pattern-for-undo-functionality

java BigDecimal 遇到的问题

BigDecimal get started

  1. why we need BigDecimal
  2. BigDecimal Round
  3. arithmeticException-non-terminating-decimal-expansion
  4. bigdecimal_toengineeringstring
  5. How_to_remove_trailing_zero_from_BigDecimal
  6. java-bigDecimal-round
  7. sqrt in BigDecimal

test

  1. junit test throw an exception

About

一家互联网公司的面试邀请题目 逆波兰表达式 实现 大数的 +-*/ sqrt 撤销

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages