2014华为校招机试高级题——if语法中的括号判断

2023-05-16

http://blog.csdn.net/wy4649/article/details/11725073

package com.huawei.job;
 
import java.util.ArrayList;
import java.util.Scanner;
 
public class IfJudge {

    public static void main(String[] args) {
       StringBuffer input = new StringBuffer();
      
       Scanner in = new Scanner(System.in);
       input.append(in.nextLine());
      
       System.out.println(new IfJudge().judge(input));
    }
    //判断if语法:输入if语句没有嵌套,只需要判断括号是否使用正确
    private  StringBufferjudge(StringBuffer sb) {
       //保存答案
       StringBuffer answ = new StringBuffer();
       int leftMax = 0;  //返回左边括号数
       int rightMax = 0; //返回右边括号数
       int left = 0;     //暂存左边括号
       int right = 0;       //暂存右边括号
       //新建一个栈
       Stack stack = new Stack();
       //把括号入栈
       boolean flag = true;  //判断是否正在输入字符或字符串
       for(int i = 0; i < sb.length(); i++) {
           if(sb.charAt(i) == '\'' || sb.charAt(i) == '\"') {
              if(flag)
                  flag = false;
              else
                  flag = true;
              continue;
           }
           //不是字符串或字符中的括号才允许入栈
           if(flag)
              if(sb.charAt(i) == '(' || sb.charAt(i) == ')')
                  stack.push(sb.charAt(i));
       }
       char tem;
       char outer = stack.pop(); //弹出第一个括号
       if(outer != ')')  //第一个括号不是右括号则语法错误
           return sb.append("WRONG");
       right++;
       rightMax++;
       //弹栈并判断
       while((tem = stack.pop()) != 0) {  //栈中还有括号则循环
           if(tem == '(') {  //弹出左括号
              left++;
              leftMax++;
           }
           else { //弹出右括号
              right++;
              rightMax++;
           }
           if(right > 0 && left > 0) { //弹出了左括号和右括号开始判断
              if(right > left) {       //正常情况下,右括号始终会大于左括号,直到最外层括号弹出
                  right -= left;
                  left = 0;
              }
              if(right == left) {      //正确情况下,左右括号数相同,说明最外层括号已弹出
                  if(stack.pop() == 0) {   //如果括号已全部弹出,说明语法正确
                     return answ.append("RIGHT" + leftMax + " " + rightMax);
                  }
                  else   //括号未弹出完毕,语法错误
                     return answ.append("WRONG");
              }
           }
       }
       //未能正确弹出,则为语法错误
       return answ.append("WRONG");
    }
}
 
class Stack {
    //栈空间为一个字符型的链表
    ArrayList<Character> chs = new ArrayList<Character>();
   
    //入栈
    public void push(char c) {
       chs.add(c);
    }
    //出栈
    public char pop() {
       if(chs.size() > 0) {
           char c = chs.get(chs.size() - 1);
           chs.remove(chs.size() - 1);
           return c;
       }
       return 0;
    }
}
 


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2014华为校招机试高级题——if语法中的括号判断 的相关文章

  • ssm配置

    web xml lt context param gt lt param name gt log4jConfigLocation lt param name gt lt param value gt classpath log4j prop
  • Ubuntu16.04安装hexo

    在Ubuntu16 04中安装hexo出现一系列的问题 xff0c 总结一下安装hexo的步骤 首先安装noejs xff0c Ubuntu源中的nodejs时旧版本 xff0c 所以需要在安装后更新nodejs span class hl
  • Power Manager之DisplayPowerState.PhotonicModulator

    Android4 4 DisplayPowerState java PhotonicModulator PhotonicModulator是DisplayPowerState的内部类 xff0c private final class xf
  • AB升级之odex文件首次开机处理

    开启AB升级方案的项目 xff0c 因为很多需要升级的镜像都有两份 xff0c 所以存储空间比较浪费 为缓解此问题 xff0c 有个针对odex的优化方案 编译版本会生成两个system镜像 xff1a system img和system
  • 使用PyQt5/PySide2编写一个极简的音乐播放器

    文章目录 一 创建UI界面二 获取网络歌曲三 创建和链接信号槽 疫情肆虐 xff0c 憋在家实在无聊 xff0c 索性写点东西 xff0c 于是就有了这个极极极极极简的音乐播放器 这个极极极简的音乐播放器类似于 阅后即焚 的软件 xff0c
  • linux中最常用的用户、组和权限

    资源分派 xff1a Authentication xff1a 认证 Authorization xff1a 授权 Accouting Audition xff1a 审计 用户user 令牌token identity Linux用户 xf
  • Ansible的playbook

    playbook还是感觉学的不扎实 xff0c 可能得再来一遍才能写出来 xff0c 先占个位置 xff0c 过几天再补充 xff01
  • DNS相关介绍

    1 名字解析介绍和DNS 1 1 背景 当前TCP IP网络中的设备之间进行通信 xff0c 是利用和依赖于IP地址实现的 但数字形式的IP地址是很难记忆的 当网络设备众多 xff0c 想要记住每个设备的IP地址 xff0c 可以说是 不可
  • 关于ubuntu22.04的安装分区时需要注意的情况

    不同于20 04版本 xff0c 可以按照如下安装 如果是ubuntu 22 04 xff0c 则必须安装efi https blog csdn net janeqi1987 article details 106172976 https
  • 系统日志管理

    1 系统日志管理 1 系统日志介绍 将系统和应用发生的事件记录至日志中 xff0c 以助于排错和分析使用 日志记录的内容包括 xff1a 历史事件 xff1a 时间 xff0c 地点 xff0c 人物 xff0c 事件 日志级别 xff1a
  • python——实现名片管理器

    39 39 39 16 编写程序 xff0c 完成 名片管理器 项目 需要完成的基本功能 xff1a 添加名片 删除名片 修改名片 查询名片 退出系统 程序运行后 xff0c 除非选择退出系统 xff0c 否则重复执行功能 名片 xff1a
  • python——实现五子棋

    39 39 39 五子棋 矩阵做棋盘 16 16 34 43 34 打印棋盘 for for 游戏是否结束 开始下棋 while True 游戏是否结束 xff1a 黑白交替 player 61 0 p 2 61 61 0 61 61 1
  • python面向对象——烤土豆,开枪案例

    烤土豆应用 xff1a 示例属性如下 cookedLevel 这是数字 xff1b 0 3表示还是生的 xff0c 超过3表示半生不熟 xff0c 超过5表示已 经烤好了 xff0c 超过8表示已经烤成木炭了 xff01 我们的地瓜开始时时
  • linux 如何查看端口被哪个进程占用?

    1 lsof i 端口号 2 netstat tunlp grep 端口号 都可以查看指定端口被哪个进程占用的情况 步骤一 lsof i lsof i 用以显示符合条件的进程情况 lsof xff08 list open files 是一个
  • 学习Hadoop——Zookeeper 介绍

    Zookeeper 是一个开源的分布应用程序协调服务 xff0c 来自于Google 一个开源的实现 xff0c 是Hadoop 和HBase 的重要组件 Zookeeper 可以为分布式应用提供一致性服务 xff0c 功能包括 xff1a
  • 数据库中的CAP原理

    去年在参加盒子科技秋招笔试题中遇到过 xff0c 印象深刻 xff0c 一直想要查资料总结下来 这个理论是由美国著名科学家 xff0c 同时也是著名互联网企业Inktomi的创始人Eric Brewer在2000年PODC Symposiu
  • downloadingSpring(Failed to download)下载失败的解决办法

    如下图所示报错 解决办法 点击Set up HTTP proxy settings 点击后 xff0c 在第二项添加华为Maven仓库https mirrors huaweicloud com repository maven 点击Try
  • 如何将本地文件复制到远程服务器

    首先 xff0c 点击windows开始按钮 xff0c 点击运行 xff08 windows 7系统请按windows快捷键 43 R xff09 xff0c 输入mstsc xff0c 点击确定 在弹出来的对话框中 xff0c 输入服务
  • 用xstart远程连接linux图形用户界面

    有时工作中 xff0c 我们需要用到linux图形用户界面环境进行一些操作 xff08 比如装oracle数据库等等 xff09 xff0c 这时就需要用xstart远程连接linux图形用户界面 xff0c 这样我们就不用特意跑到机房操作
  • SpringDataJpa 动态复杂查询NativeQuery

    SpringDataJpa 动态复杂查询NativeQuery emm挺长时间没更新了 xff0c 最近在忙项目 xff0c 外加搬家 后续会继续更新 遇到一个复杂的sql查询 xff0c 在不通过外键关联的情况下 xff0c 只能选择使用

随机推荐

  • 又见一帘幽梦

    又见一帘幽梦 最是魂断伤心处 xff0c 浮生若残梦 冷遇秋 xff0c 夕阳下 xff0c 碧野又清空 xff0c 泪眼朦胧 一帘幽梦红尘路 xff0c 爱深处 xff0c 情留驻 秋菊相思 xff0c 旭日重生 xff0c 无奈生死殊途
  • Openfeign ErrorDecoder caused java.io.IOException: stream is closed

    实现错误解码器 保留 feign 服务异常信息 xff0c 左侧是之前设计的 偶尔下游系统出现异常时 xff0c 拿到返回结果时 xff0c 居然会是stream is closed xff0c 就找了下原因 Don 39 t use an
  • 鞋厂园区--稳食生涯--2017~2018

    2017年初 进入广州的鞋类企业搞数字化新零售中台业务开发 这个地方 应该是我进入电商新零售业务的启蒙和提升之地 不但学习了线上线下的电商与门店业务 也学习了完整的一套新零售中台业务技术架构和整体的微服务演变进程 同时也应该算是收获最多朋友
  • 棉类工业园--奋斗的故事--2018~2020

    nbsp 2018年8月 进入深圳的工业园继续搞数字化新零售中台业务开发 18年初步规划设计 从0到1打造整个电商与新零售中台体系 1 用户中心 用户表 角色表 系统表 菜单表 用户角色表 角色菜单表 角色系统表 数据范围表 用户数据范围
  • 不是我写的原文

    青春的尾声悄然敲响 xff0c 我站在尽头送别剩下为数不多的光阴 婚礼上同学聚会上 xff0c 越来越多的人开始为人妻为人母 xff0c 我们在经受着一场不可逆的转变 转变以前是快乐的 xff0c 转变后也会是另一种快乐 xff0c 但是转
  • 我这是一条什么路

    首先 xff0c 我从未在这里发表博客 xff0c 有些胆战 其次 xff0c 我技术不精 xff0c Java web php Android 再次 xff0c 没有共享过源码 xff0c 倒是从不少开源代码获益 最后 xff0c 这也许
  • 在珠海的一年

    时间倒退到2013年 作为应届生 xff0c 初入职场 xff0c 来到珠海 xff0c 开始了我IT生涯的第一步 以Java初级程序员的身份 xff0c 加入一家港企 xff0c 位于珠海的香洲区唐家湾镇 xff0c 还真的是一个镇啊 一
  • Hadoop的构造模块

    Hadoop集群中运行的守护进程共有5类 xff1a NameNodeDataNodeSecondary NameNodeJobTrackerTaskTracker Hadoop集群中的机器 节点 分为2类 xff1a 主节点和从节点 xf
  • 通过yum来进行mysql的安装

    1 卸载掉原有mysql rpm qa grep mysql 这个命令就会查看该操作系统上是否已经安装了mysql数据库 rpm e mysql 普通删除模式 rpm e nodeps mysql 强力删除模式 xff0c 如果使用上面命令
  • 因为咳嗽

    看了下我曾写过的博客 xff0c 居然发现年初的时候 xff0c 原来也咳嗽的撕心裂肺一次 xff0c 而这次又发作了 xff0c 我预估这是一种很严重的肺炎 xff0c 但还没去医院检测过 xff0c 心情甚是忧伤 回头望了下自己这几年写
  • VC++ 学习笔记------Window 多线程(生产消费者模式 案例)

    理论部分参考 这篇文章讲生产 消费者模式比较详细 http ifeve com producers and consumers mode 使用VC 43 43 模式实现如 xff1a span class hljs comment 创建信号
  • 微服务横行的今天, 你的文档跟上节奏了么?

    转载自 xff1a https blog maxleap cn archives 1241 说起微服务 想必现在的技术圈内人士个个都能谈笑风云 娓娓道来 的确 技术变革日新月异 各种工具框架雨后春笋般涌现 现在我们可以轻巧便捷地根据自己的业
  • 微服务实战:从架构到发布(一)

    转载自 xff1a https blog maxleap cn archives 195 引言 xff1a 微服务 是当前软件架构领域非常热门的词汇 xff0c 能找到很多关于微服务的定义 准则 xff0c 以及如何从微服务中获益的文章 x
  • 《次时代Java编程(一):续 vertx-sync实践》

    转载自 xff1a https blog maxleap cn archives 1013 vertx sync是什么 上一篇我们已经讲了 Fiber 相关的知识 xff0c 想必大家对Java实现类似Golang的coroutine已经有
  • Linux下安装、配置、启动Apache

    环境 Centos 6 5 64位操作系统 安装Apache前准备 xff1a 1 检查该环境中是否已经存在httpd服务的配置文件 xff0c 默认存储路径 xff1a etc httpd httpd conf xff08 这是cento
  • 我从来没有得到过你,却好像已经失去了你千万次。

    为什么从来没有得到的东西 xff0c 也会让人有一种失去的感觉 xff1f 如题 xff01 xff01
  • power yourself

    1 不要做繁琐的计划 2 远离魔鬼 躲避诱惑 3 保持早睡早起的习惯 4 记录自己的成长轨迹 5 选择性离开网络世界
  • 希望余生尽早开始

    我爱你在暖和的天气感冒 我爱你用一小时来点菜 我爱你皱着眉头看我 好像我是疯子一样 我爱跟你分别后 仍然萦绕不散的余香 我想在睡前和你聊天 我来这 并不是因为我寂寞 也不是因为今天是除夕 是因为发现 如果你想要与某人共度余生 那你就会希望余
  • 又一年--在深圳

    一晃再晃 xff1b 一拖再拖 xff1b 我还是独自一个人奋战 xff0c 在这座繁华都市 严重的错觉就是 xff0c 总以为自己不想加班 xff0c 却发现只有加班的日子才过的充实 xff0c 也许事不知道业余时间该干嘛 这一年 xff
  • 2014华为校招机试高级题——if语法中的括号判断

    http blog csdn net wy4649 article details 11725073 package com huawei job import java util ArrayList import java util Sc