394. Decode String

四种情况: 

    1. 数字,把之前有的数字乘以10再加本数字

    2. ' [ ', 入口, 把之前的数字压入栈中并num归零。

    3. ' ] ' ,出口,归零。用dfs先讲栈中的最顶的string都取出,并按添加cnt次。

    4. 字母,压入栈中。

instanceof string : 判断是不是string类型。

class Solution {
public String decodeString(String s) {
int num = 0;
Stack<Object> stack = new Stack<>(); for(char c : s.toCharArray()){
//1.number
if(Character.isDigit(c)){
num = num * 10 + c - '0';
}else if(c == '['){//2. [
stack.push(Integer.valueOf(num));
num = 0;
}else if(c == ']'){//3. ]
String newstr = dfs(stack);
Integer cnt = (Integer)stack.pop();
for(int i = 0; i < cnt; i++){
stack.push(newstr);
}
}else{//letter
stack.push(String.valueOf(c));
}
}
return dfs(stack);
} private String dfs(Stack<Object> stack){
Stack<String> tmp = new Stack<>();
while(!stack.isEmpty() && stack.peek() instanceof String){
tmp.push((String)stack.pop());
}
StringBuilder sb = new StringBuilder();
while(!tmp.isEmpty()){
sb.append(tmp.pop());
}
return sb.toString();
}
}

224. Basic Calculator

我们需要一个栈来辅助计算,用个变量sign来表示当前的符号,我们遍历给定的字符串s,如果遇到了数字,由于可能是个多位数,所以我们要用while循环把之后的数字都读进来,然后用sign*num来更新结果res;如果遇到了加号,则sign赋为1,如果遇到了符号,则赋为-1;如果遇到了左括号,则把当前结果res和符号sign压入栈,res重置为0,sign重置为1;如果遇到了右括号,结果res乘以栈顶的符号,栈顶元素出栈,结果res加上栈顶的数字,栈顶元素出栈。

注意当最后一位不为0的时候,要计算出结果。

class Solution {
public int calculate(String s) {
Stack<Integer> stack = new Stack<>(); int i = 0;
int num = 0;
int sign = 1;
int subsum = 0;
while(i < s.length()){
char c = s.charAt(i);
if(Character.isDigit(c)){
num = num * 10 + (c - '0');
}else if(c == '+'){
subsum += num * sign;
sign = 1;
num = 0;
}else if(c == '-'){
subsum += num * sign;
sign = -1;
num = 0;
}else if(c == '('){
stack.push(subsum);
subsum = 0;
num = 0;
stack.push(sign);
sign = 1;
}else if(c == ')'){
subsum += num * sign;
num = 0;
sign = 1;
subsum *= stack.pop();
subsum += stack.pop();
}
i++;
}
if(num != 0){
subsum += num * sign;
}
return subsum;
}
}

<Stack> (高频)394 ( 高频)224的更多相关文章

  1. 用 R 进行高频金融数据分析简介

    作者:李洪成 摘自:http://cos.name/wp-content/uploads/2013/11/ChinaR2013SH_Nov03_04_LiHongcheng.pdf 高频数据 金融市场 ...

  2. 高频交易[z]

    著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:袁浩瀚链接:https://www.zhihu.com/question/21789812/answer/22178178来源 ...

  3. Java才是世界上最好的语言,Java在高频交易中替代C++

    高频交易 高频交易是指从那些人们无法利用的极为短暂的市场变化中寻求获利的计算机化交易,比如,某种证券买入价和卖出价差价的微小变化,或者某只股票在不同交易所之间的微小价差.在高频交易中,自动化应用程序每 ...

  4. Deep Dream 模型

    本节的代码参考了TensorFlow 源码中的示例程序https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/ ...

  5. 【转】用Python做股市量化策略投资数据分析

    金融量化分析介绍     本文摘要; 金融量化分析介绍 1.什么是金融量化分析 2.金融量化分析可以干什么 3.为什么将python运用于金融 4.常用库简介 1.什么是金融量化分析 从标题中我们可以 ...

  6. Deep Dream模型与实现

    Deep Dream是谷歌公司在2015年公布的一项有趣的技术.在训练好的卷积神经网络中,只需要设定几个参数,就可以通过这项技术生成一张图像. 本文章的代码和图片都放在我的github上,想实现本文代 ...

  7. 极客DIY:廉价电视棒玩转GNSS-SDR,实现GPS实时定位

    0×00 前言 GNSS是Global Navigation Satellite System的缩写.中文称作:全球卫星导航系统.全球导航卫星系统. GNSS泛指所有的卫星导航系统,包括全球的.区域的 ...

  8. 用Python做股市数据分析(一)

    本文由 伯乐在线 - 小米云豆粥 翻译.未经许可,禁止转载!英文出处:Curtis Miller.欢迎加入翻译组. 这篇博文是用Python分析股市数据系列两部中的第一部,内容基于我犹他大学 数学39 ...

  9. 【python-opencv】16-图像平滑

    [微语]“你以后向成为什么样的人?”    “什么意思,难道我以后就不能成为我自己吗?”    ----<阿甘正传> 补充知识点:如何理解图像的低频是轮廓,高频是噪声和细节 图像的频率:灰 ...

随机推荐

  1. Android TeaPickerView数据级联选择器

    数据级联选择器.三级联动.二级联动.层级联动.多数据筛选.必藏 (Data Cascade Selector, Hierarchical Structure, Multiple Data Screen ...

  2. 腾讯,华为,阿里…7家Java后端面试经验大公开!

    感觉面试还是主要围绕简历来问的,所以不熟悉的东西最好不要随便写上去.项目和基础都很重要,整体的基础知识的框架可以参考GitHub 上 CYC2018的博客,分类很全,但是深入的学习还是要自己去看书,写 ...

  3. Oracle 11g Dataguard参数详解

    https://www.jb51.net/article/52269.htm注:本文译自<Oracle Data Guard 11g Handbook> Page 78 – Page 88 ...

  4. Bug 29041775 : ORA-41401: Define character set () does not match database character set ()

    oracle版本12.2.0.1 Errors in file /u01/app/oracle/diag/rdbms/sibcyb1/CYB111/trace/CYB111_q003_166752.t ...

  5. 本地库还原至阿里云RDS服务器

    在此也感谢阿里云售后兄弟的支持.全文参考 https://help.aliyun.com/document_detail/95738.html? 1. 首先得要有个阿里云账号,已经购买RDS数据库(本 ...

  6. 12c新特性 在线操作数据文件

    我们都知道,oracle pre-12c之前,若是想要把一个数据文件改名或者迁移, 必须在归档模式下先把这个数据文件offline之后, 然后进行OS上的copy或者rename 操作, 最后在sql ...

  7. MySQL数据库:合并结果集

    合并结果集 union----合并结果集 对合并后的结果集中的重复数据也会自动去重 select sName from students union select tName from Teacher ...

  8. centos7设置服务开机自启

    1.在/usr/lib/systemd/system/路径下创建文件 ***.service. 写入如下内容 [Unit]Description=nginxAfter=network.target [ ...

  9. PC上装VM上装虚拟机

    1.虚拟机网卡选择桥接模式 2.查看本PC机的网络 3.到/etc/sysconfig/network-scripts,修改网卡,vi ifcfg-ens33 4.重新/etc/init.d/netw ...

  10. docker-19.03安装部署,阿里源加速

    docker所依赖的包环境,为了方便不报错,推荐执行 [root@liujunjun ~]# yum install -y yum-utils device-mapper-persistent-dat ...