当前位置: 首页 > news >正文

交互网站开发萧山做网站公司

交互网站开发,萧山做网站公司,百度网盘搜索神器,遵义市城乡建设局安管人员考试网站目录 1- 思路栈实现四种情况处理 2- 实现⭐394. 字符串解码——题解思路 3- ACM 实现 原题链接:394. 字符串解码 1- 思路 栈实现四种情况处理 ① 遇到数字,进行倍数相加 、②遇到左括号,压栈之前的元素、③遇到右括号弹出,栈进行…

目录

  • 1- 思路
    • 栈实现+四种情况处理
  • 2- 实现
    • 394. 字符串解码——题解思路
  • 3- ACM 实现

  • 原题链接:394. 字符串解码

1- 思路

栈实现+四种情况处理

  • ① 遇到数字,进行倍数相加 、②遇到左括号,压栈之前的元素、③遇到右括号弹出,栈进行拼接、④否则遇到字母,直接拼接在 res
  • 通过栈,实现先进后出的思想

对于输入 3[a2[c]] 的输入,在读到 3[得到第一个括号 [ 之后才会进行入栈操作,也就是将之前的 3 入栈到一个 multi的栈中

    1. 定义一个 multi 变量用于存储倍数,也就是当前字符串扩大的倍数。
    1. 定义 res变量用于存储临时结果,如果读到的是字符,一直更新 res

读取过程

  • 读取数字:一开始如果读取的都是数字 multi,则对 multi*10 + c - '0'; 的方式
  • 读取字符:如果读取字符,暂存到 res 中,是否压栈取决于遇到的括号
  • 遇到 '[' 括号:如果遇到了左括号,则将 '[' 前状态的 数字 multi 和字符 res 进行压栈,之后重新更新 multires
  • 遇到 ']' 括号:如果遇到了右括号,则需要弹栈,进行处理


2- 实现

394. 字符串解码——题解思路

在这里插入图片描述

class Solution {public String decodeString(String s) {StringBuilder res = new StringBuilder();int multi = 0;// 两个栈Deque<Integer> stack_multi = new ArrayDeque<>();Deque<String> stack_str = new ArrayDeque<>();for(Character c: s.toCharArray()){//  0-9if( c>='0' && c<='9'){multi = multi*10 + c-'0';}else if(c == '['){stack_multi.push(multi);stack_str.push(res.toString());multi = 0;res = new StringBuilder();}else if(c == ']'){StringBuilder tmp = new StringBuilder();int curMulti = stack_multi.pop();for(int i = 0 ; i < curMulti;i++){tmp.append(res);}res = new StringBuilder(stack_str.pop()).append(tmp);}else{res.append(c);}}return res.toString();}
}

3- ACM 实现

public class strDecode {public static String strDecode(String str){// 1. 数据结构int multi = 0;StringBuffer res =  new StringBuffer();// 数字倍数Deque<Integer> stack_multi = new ArrayDeque<>();Deque<String> stack_res = new ArrayDeque<>();// 遍历字符串 strfor(Character c : str.toCharArray()){// 如果是数字 更新倍数if( c>='0' && c<= '9'){multi = multi *10 + c - '0';}else if( c == '['){// 压栈stack_multi.push(multi);stack_res.push(res.toString());// 重置multi = 0;res = new StringBuffer();}else if(c==']'){// 出栈计算int nowMulti = stack_multi.pop();StringBuffer tmp = new StringBuffer();for(int i = 0 ; i < nowMulti;i++){tmp = tmp.append(res);}res = new StringBuffer(stack_res.pop()).append(tmp);}else{res.append(c);}}return res.toString();}public static void main(String[] args) {Scanner sc = new Scanner(System.in);String input = sc.nextLine();System.out.println("结果是"+strDecode(input));}
}

http://www.yayakq.cn/news/576040/

相关文章:

  • 做众筹网站要什么资质作图神器
  • 长沙市城市建设档案馆网站大良网站建设市场
  • 移动宽带过期了怎么续费淄博seo方案
  • 网站空间搭建网站对于企业的作用
  • 中医院网站素材企业网站怎么做才能留住客户
  • 郑州租赁房网站建设移动物联网流量卡
  • 网易考拉的网站建设信息化管理软件
  • 中石化网站是哪个公司做的医疗ppt模板下载免费完整版
  • 那些网站百度抓取率比较高wordpress会员通知插件
  • 陕西省建设工程施工许可证查询网站wordpress 水果主题
  • 故城建设银行网站绍兴市住房和城乡建设局网站
  • 网址导航网站建站什么是响应式网站
  • 做民族网站的配色哪些颜色适合用微信小程序连接WordPress
  • 做网站有包括哪些东西临夏州住房和城乡建设局网站
  • 沈阳城市建设学院官网网站医院网站建设与管理ppt
  • 网站开发用的电脑品牌网站建设搜搜磐石网络
  • 网站开发概要设计书模板电商加盟的网站建设
  • 宁波自助建站模板百度推广运营怎么做
  • 长春网站设计平台wordpress 4.0
  • 重庆哪家公司做网站好小程序快速搭建
  • 石狮做网站一个简单鲜花的html网页
  • 浏览器网站大全免费龙岩网站制作设计
  • 做网站 郑州公司有哪些政法门户网站建设情况
  • 润才网站建设云主机可以放几个网站
  • 我的免费网是个什么网站漯河seo
  • 黑龙江省建设厅官方网站阿里云空间做网站
  • 杭州网站建设页面怎么样建设网站
  • 郑州网站建设郑州网站建设软件开发工程师岗位要求
  • 网站怎么做json数据江浦企业管理咨询服务有限公司
  • 泰州专业制作网站免费刷粉网站推广免费