猿辅导笔试

编程题的解析字符串

5
A11B
(AA)2A
((A2B)2)2G
(YUANFUDAO)2JIAYOU
A2BC4D2

输入如上,按照规则解析字符串
研究了下用栈写出来了,其实不难,加上笔试时间,和复杂的边界条件,程序就很难跑的完全通。
如果有好的递归写法,欢迎分享下

public class Main {public static void main(String[] args) {decodeString("A11B");decodeString("(AA)2A");decodeString("((A2B)2)2G");decodeString("(YUANFUDAO)2JIAYOU");decodeString("A2BC4D2");}public static String decodeString(String s) {Stack<String> stack = new Stack();for (int i = 0; i < s.length(); i++) {if (s.charAt(i) == ')') {String str = "";while (!stack.peek().equals("(")) {str = stack.pop() + str;}stack.pop();String num = "";int w = 0;while (s.charAt(i + 1) >= '0' && s.charAt(i + 1) <= '9') {w++;num = s.charAt(i + 1) + num;i++;}i = i - w + 1;int repeat = Integer.parseInt(num);String ret = "";for (int j = 0; j < repeat; j++) {ret = ret + str;}stack.push(ret);} else if (i + 1 > s.length() - 1 || s.charAt(i + 1) < '0' || s.charAt(i + 1) > '9') {String str = "";stack.push(s.charAt(i) + str);} else {int index = i;String num = "";while ((i + 1) <= s.length() - 1 && s.charAt(i + 1) >= '0' && s.charAt(i + 1) <= '9') {num = s.charAt(i + 1) + num;i++;}int nums = Integer.parseInt(num);String ret = "";for (int k = 0; k < nums; k++) {ret = s.charAt(index) + ret;}stack.push(ret);if (i + 1 >= s.length()) {break;}}}String result = "";while (!stack.isEmpty()) {result = stack.pop() + result;}System.out.println(result);return result;}
}

输出如下

AAAAAAAAAAAB
AAAAA
AABAABAABAABG
YUANFUDAOYUANFUDAOJIAYOU
AABCCCCDD

2019年秋招猿辅导笔试编程题解析字符串相关推荐

  1. 2020秋招——XX校招笔试编程题:回文串

    回文串判断&打印给定字符串中的所有回文串 笔试时是纸质的,记错了indexOf()函数和charAt()函数,重大失误emmm,这样逻辑虽然都对了还是要gg,ww,反省中... 回文串:aba ...

  2. 科大讯飞2019秋招研究算法笔试编程题

    第一题 样例输入 2 5 60 59 20 30 90 100 5 60 59 20 10 10 100 样例输出 1 2 Hint 对于第一组数据,将59改成60即可 AC代码: def minst ...

  3. 网易雷火2020秋招平台开发笔试-编程题

    题一 题目描述 AABB盒(Axis-Aligned Bounding Box)是描述3D世界包围盒的一个长方体,他的每一边都平行于一个坐标平面,中心点,长.宽.高可以彼此不同,如下图所示: 现在给定 ...

  4. 2018年贝壳网校招(秋招)算法笔试编程题

    1.题目描述: 给定一个长度为N的序列A1到AN,求所有区间[L,R](1≤L≤R≤N)的极差之和,其中区间[L,R]的极差定义为AL到AR中的最大值与最小值之差. 思路:暴力求解,通过率36% 代码 ...

  5. 字节跳动2019春招第二次笔试编程题

    字节跳动2019春招第二次笔试编程题 1.变身程序员 题目描述 输入描述 输出描述 示例 示例1 示例2 示例3 分析 参考代码 2.特征提取 题目描述 输入描述 输出描述 示例 示例1 备注 分析 ...

  6. 华为秋招机试三道编程题(2021-09-01)

    通知:华为.阿里最新的秋招笔试编程题题目.思路以及参考代码已经全部整理好放在微信公众号[TechGuide]了,私信公众号回复[华为]或者[阿里]即可获得最实时.最详细的笔试题解啦! 通知:华为.阿里 ...

  7. 猿辅导9-12编程题3道

    第一题: 模拟题,给你一个数组,每次把前N/2部分和后N-N/2部分交叉合并,求合并M次后的结果 . #include<iostream> using namespace std;int ...

  8. 2019美团机器学习/数据挖掘算法实习生笔试 编程题修改矩阵

    主要用于交流思考 1.修改矩阵 时间限制:C/C++语言 1000MS:其他语言 3000MS 内存限制:C/C++语言 65536KB:其他语言 589824KB题目描述: 我们称一个矩阵为黑白矩阵 ...

  9. 2021秋招拼多多笔试算法题

    1.现有一个n*m的矩阵,矩阵中每个格子都有且只有一种颜色.矩阵中共有k种颜色,每个颜色通过特定数字C(i,j)表示.设初始位置位于(1,1),每次可以向右(x+1,y)者向下(x,y+1)移动一个单 ...

最新文章

  1. Netweaver工作进程的内存限制 VS CloudFoundry应用的内存限制
  2. Linux系统进程管理
  3. 系统重装 如何转换GPT的磁盘格式为MBR或者反过来
  4. 在CNN上增加一层CAM告诉你CNN到底关注什么
  5. flutter 页面加载动画_Flutter撸一个加载动画
  6. 王者荣耀最难选择题2选1,刺痛cos虞姬,还是北极星露脸?我选一
  7. win8 -telnet安装
  8. ASP.NET Core2读写InfluxDB时序数据库
  9. 第三十八期:用Git帮助写作者更好地完成工作
  10. 此处不允许使用分组函数_Excel中使用Vlookup函数实现数据分组
  11. libreoffice转换文件为pdf文件乱码问题解决办法
  12. 华为Fusioncompute 安装windows虚拟机tools安装失败和硬盘不识别问题解决
  13. 蚂蚁课堂视频笔记思维导图-3期 三、性能优化专题
  14. 计算机培训通知,关于开展上海师范大学2018年计算机办公自动化免费培训的通知...
  15. Java——哈希值是什么?
  16. python使用pytesseract识别图片中的文字
  17. linux sox用法 播放,SoX——linux终端播放音频文件
  18. 【网易微专业】算法原理与实践 2
  19. 在计算机上知道手机密码,不知道密码查手机通话记录:傻瓜式教程
  20. python程序员面试宝典:12个Python程序员面试必备问题与答案

热门文章

  1. Android系统启动流程 -- bootloader、linux kernel、android
  2. FPGA程序如何模块化设计?
  3. auc 和loss_为什么是AUC值而不是GSEA来挑选转录因子呢
  4. 热烈祝贺湖南人爱科技有限公司创始人:熊泽波荣获“2019大国优秀创新企业奖”
  5. xstart连接linux桌面使用的端口,用xstart远程连接linux图形用户界面
  6. 2021年顶级编程语言名单出炉,SQL位居榜首,Java、Python紧随其后
  7. ffmpeg配置问题:Couldn‘t find ffmpeg or avconv - defaulting to ffmpeg, but may not work
  8. Sakurairo主题的美化篇,底部美化
  9. 数据挖掘的十八般武艺,咳咳,十八个重要算法
  10. c语言软件清屏代码,求用switch语句写的代码,要清屏,要满足图、、,谢谢,C语言...