找到了一个思路:hihocoder 1671

思路:这里开始想着 用栈直接模拟,写完之后直接爆掉,想想这个数据量,也是,只能扫一遍处理。看到一种方法,拿一个数组记录对应括号的位置,(用栈实现),然后正序输出,如果当前遇到括号,调到括号另一边,往回加。一直加到当前括号。但是有个问题,再次到当前括号,又会跳转到对应括号,怎么跳出来呢?一个很巧妙的方法,设置一个方向标志d=1,每次遇到括号就取反,当再次回到同一个括号处时,概括内的已经处理好了,翻转2次,继续正方向输出。

A 掉了

代码:

package interview;import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;public class Ctrip2 {/*请完成下面这个函数,实现题目要求的功能当然,你也可以不按照下面这个模板来作答,完全按照自己的想法来 ^-^******************************开始写代码******************************/static String resolve(String expr) {StringBuilder sb = new StringBuilder();int[] resIdx = new int[expr.length()];Stack<Integer> stack =  new Stack<>();int length = expr.length();int index;for (int i=0;i<length;i++){if (expr.charAt(i) == '('){stack.push(i);}else if ( expr.charAt(i) == ')'){index = stack.pop();resIdx[i] = index;resIdx[index] = i;}}int cur = 0, dir = 1;while (cur != expr.length()){if (expr.charAt(cur) == '(' || expr.charAt(cur) == ')'){cur = resIdx[cur];dir = -dir;cur += dir;}else {sb.append(expr.charAt(cur));cur += dir;}}return sb.toString();}/******************************结束写代码******************************/public static void main(String[] args){Scanner in = new Scanner(System.in);String res;String _expr;try {_expr = in.nextLine();} catch (Exception e) {_expr = null;}res = resolve(_expr);System.out.println(res);}
}

转载于:https://www.cnblogs.com/vector11248/p/11463607.html

20届校招-携程笔试题-表达式解析相关推荐

  1. 华为2018届校招技术岗笔试题及个人解答

    前言 昨天(9.13)参加了华为2018届的技术岗笔试,特此总结一下笔试的题目和我个人的解答思路. 笔试题一共是三道编程题,大致是数值反向输出,比较和排序,相对较基础. PS:由于没有截图,所以题目是 ...

  2. 携程笔试题:订单查询

    携程笔试题:有一批订单记录,数据有订单号,入店时间,离店时间;输入一个时间值A,需要在这批记录中找到符合入离店时间范围(A大于等于入店时间,并且A小于等于离店时间)内的所有记录.单次查询时间复杂度控制 ...

  3. 2017年4月11日携程笔试题 拼图

    题目: 代码: (这是笔试的时候提交的代码,是错的) #include<iostream> #include<queue> using namespace std;struct ...

  4. 蘑菇街2019届校招-测试类笔试题

    1.在Linux上,对于多进程,子进程继承了父进程的下列哪些?(共享内存.信号掩码.已打开的文件描述符) 2.java语言中,在同一包下,以下说法正确的有() (super.方法()可以调用父类的所有 ...

  5. 2017年4月11日携程笔试题 乘积最大

    题目: 解析:调整法.贪心_nameofcsdn的博客-CSDN博客 代码: #include<iostream> using namespace std;int maxNum(int k ...

  6. 数据分析真题日刷 | 京东2019校招数据分析工程师笔试题

    今日真题 网易2018校园招聘数据分析工程师笔试卷(来源:牛客网) 题型 客观题:单选51道,不定项选择12道 完成时间 120分钟 牛客网评估难度系数 3颗星 ❤️ 「更多数据分析真题」 <数 ...

  7. 蘑菇街2015校招 Java研发笔试题 详解,2015java

    蘑菇街2015校招 Java研发笔试题 详解,2015java 1. 对进程和线程描述正确的是( ) A.  父进程里的所有线程共享相同的地址空间,父进程的所有子进程共享相同的地址空间. B.  改变 ...

  8. 阿里校招 数据分析师 笔试题

    2015年8月19日,阿里校招数据分析师笔试题.共计21题(貌似统计漏了一题,应该是单选少了一题,凑合看吧),选择题每个人的都不一样,问答题是一样的.暂时没有答案,希望对大家有用. 单选题: 1观测宇 ...

  9. 小红书2020校招数据分析笔试题卷四 解析

    小红书2020校招数据分析笔试题卷四 解析 单选题 多选题 填空题 简答题 题目来自小红书2020校招数据分析笔试题卷四 单选题 如果在小红书商城中某一商户给一产品定价,如果按照全网最低价500元定价 ...

  10. 中兴校招c语言在线笔试题,中兴2017校招软件在线笔试题

    硬件工程师Hardware Engineer职位 要求熟悉计算机市场行情;制定计算机组装计划;能够选购组装需要的硬件设备,并能合理配置.安装计算机和外围设备;安装和配置计算机软件系统;保养硬件和外围设 ...

最新文章

  1. Apple高规格推3232吋LCD面板XDR
  2. win7 旗舰版 网上邻居访问问题
  3. Putty、Xshell连接Linux
  4. USTC English Club Note20171014(2)
  5. 逆向入门--简单win32CK逆向手记
  6. Android之万能适配器Adapter的使用
  7. LeetCode 1797. 设计一个验证系统(map)
  8. tensorflow3 非线性回归、mnist、简单神经网络
  9. OpenCV-离散傅里叶变换cv::dftcv::idft
  10. 微信棋牌程序搭建Redis持久化存储(AOF与RDB两种模式)
  11. Python学习 Day 039 - HTML
  12. 值得一看!年薪50万运维安全工程师学习路线
  13. What is Drilldown configuration
  14. 揭开JS加密解密的神秘面纱(1)
  15. html js 获取this,JavaScript中的this引用(推荐)
  16. 封锁阳光大学(染色)
  17. 【读点论文】Mobile-Former: Bridging MobileNet and Transformer,transformer全局把控,mobilenet细节处理,很低的FLOPs展现效果较佳
  18. 三星j7出现android,三星J7配置曝光 配骁龙625/运行安卓7.0
  19. Android统一推送联盟成立
  20. RVDS-RealView Development Suite 4 0 Professional软件

热门文章

  1. 如何实现ArcSDE的集群功能
  2. MySQL数据库(四)
  3. 关于mqtt+js前端中mqtt服务器关闭重连服务器后js前端接收不到消息的问题
  4. HW Eth-Trunk链路聚合
  5. MySQL优化详解(一)——硬件和系统优化
  6. Kubernetes之实战入门
  7. 谁说程序员找不到女朋友,你们是不知道当程序员撩妹,一撩一个准
  8. Spring【DAO模块】就是这么简单
  9. iOS学习资源(五)
  10. maven setting 设置jdk版本