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语法中的括号判断 的相关文章

  • Docker-DockerFile的使用

    在使用DockerFile定制镜像之前 xff0c 我们先来了解一下镜像的构成 xff1a 镜像是容器的基础 xff0c 每次执行docker run命令的时候都会指定哪个镜像作为容器运行的基础 在之前的栗子中 xff0c 我们使用的镜像都
  • Python-标准库calendar的使用

    此模块允许你输出类似Unix cal程序的日历 xff0c 并提供与日历相关的其他有用功能 值得注意的是 xff0c 默认情况下 xff0c 这些日历将星期一作为一周的第一天 xff0c 将星期日作为一周的最后一天 欧洲惯例 不过 xff0
  • Docker MySql报2059错误: Authentication plugin 'caching_sha2_password' cannot be loaded

    最近在使用Docker安装和配置MySql xff0c 按照正常的步骤来安装和配置MySQL xff0c 可配置完成后登录MySQL客户端出现了2059错误 xff0c 于是上各种博客 技术论坛寻求相关的问题解决办法 xff0c 可是仍然找
  • 套接字与文件

    在Linux中 xff0c 所有套接字都是文件 xff0c 操作系统并不区分套接字和文件 xff0c 因此对二者可以使用相同的读写函数
  • MySQL中find_in_set函数的使用

    1 语法 FIND IN SET str strlist xff08 1 xff09 str 要查询的字符串 xff08 2 xff09 strlist 字段名 xff1b 参数以 分隔 如 1 2 6 8 查询字段 strlist 中包含
  • C文件创建并写入文件

    创建并写入文件 u003Cstdio h gt nint main n n t 创建一个名为data txt的文件 n tFILE pFile 61 fopen 34 data txt 34 34 w 34 n tif pFile 61 6
  • 关于海康摄像头的摘要认证

    最近在做一个项目时候要用到摄像头人脸抓拍 xff0c 人脸识别等功能 xff0c 原本使用海康的SDK就可以解决的 xff0c 但是我们项目是在arm平台下开发的 xff0c 而海康的SDK不支持arm平台 xff0c 无奈联系的海康的技术
  • 华为OD机试真题2023(JAVA)

    目录 华为OD机试是什么 xff1f 华为OD面试流程 xff1f 华为OD机试通过率高吗 xff1f 华为OD薪资待遇 xff1f 华为OD晋升空间 xff1f 大家好 xff0c 我是哪吒 本专栏包含了最新最全的华为OD机试真题 xff
  • ARM的快速上下文切换(FCSE)

    一 FCSE的原理 通常情况下 xff0c 如果两个进程占用的虚拟地址空间由重叠 xff0c 系统在这两个进程之间进行切换时 xff0c 必须进行虚拟地址到物理地址的重映射 而虚拟地址到物理地址的重映射涉及到重建MMU中的页表 xff0c
  • 使用PyQt5/PySide2编写一个极简的音乐播放器

    文章目录 一 创建UI界面二 获取网络歌曲三 创建和链接信号槽 疫情肆虐 xff0c 憋在家实在无聊 xff0c 索性写点东西 xff0c 于是就有了这个极极极极极简的音乐播放器 这个极极极简的音乐播放器类似于 阅后即焚 的软件 xff0c
  • Android zxing二维码扫描 扫描框适应各种分辨率

    public synchronized Rect getFramingRect if framingRect 61 61 null if camera 61 61 null return null Point screenResolutio
  • 实战:MySQL Sending data导致查询很慢的问题详细分析

    这两天帮忙定位一个mysql查询很慢的问题 xff0c 定位过程综合各种方法 理论 工具 xff0c 很有代表性 xff0c 分享给大家作为新年礼物 xff1a xff09 问题现象 使用sphinx支持倒排索引 xff0c 但sphinx
  • TypeScript入门到入土(3)webpack打包ts代码

    上一节我们讲了ts的编译选项 xff0c 这一节我们介绍利用webpack打包我们的ts代码 前文链接 xff1a TypeScript入门到入土 xff08 2 xff09 小杨爱编程的博客 CSDN博客 ts 的安装以及ts中类型 xf
  • ROS中关于topic和service的运用场合

    本文的翻译来自 ROS answers 官方的问答区 2014 7 30 点击打开链接 topics seem like the best way for storing 34 states 34 of the robot stateful
  • 又见一帘幽梦

    又见一帘幽梦 最是魂断伤心处 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 用户中心 用户表 角色表 系统表 菜单表 用户角色表 角色菜单表 角色系统表 数据范围表 用户数据范围
  • YOLOv5改进:引入DenseNet思想打造密集连接模块,彻底提升目标检测性能

    目录 一 密集连接模块的介绍1 密集连接的概念2 密集连接与残差连接的对比3 DenseNet的结构 二 YOLOv5中引入密集连接模块的原因1 密集连接模块对于目标检测的优势2 密集连接模块对目标检测性能的影响 三 YOLOv5中密集连接
  • 不是我写的原文

    青春的尾声悄然敲响 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 心情甚是忧伤 回头望了下自己这几年写
  • 微服务横行的今天, 你的文档跟上节奏了么?

    转载自 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已经有
  • 我的2016--"狗血"

    偶然看到了CSDN的 我的2016 主题征文活动 xff0c 突然感慨一番 xff0c 今年又快结束了 xff0c 而我这一年的经历 xff0c 可以浓缩为两个字 xff1a 狗血 然而 xff0c 我能用上如此不羁的词汇 xff0c 并未
  • 华为OD机试 - 买卖股票的最佳时机(Java)

    一 题目描述 给定一个数组 prices xff0c 它的第 i 个元素 prices i 表示一支给定股票第 i 天的价格 你只能选择 某一天 买入这只股票 xff0c 并选择在 未来的某一个不同的日子 卖出该股票 设计一个算法来计算你所
  • 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
  • Debian下安装配置fcitx

    本人新装Debian7 LXDE桌面 xff0c 下面介绍一下安装配置fcitx的步骤 在此之前 xff0c 需要先保证locale的中文支持 xff1a 1 locale a xff0c 得到若干语言编码组合 xff0c 其中需要有zh
  • ROS: catkin_make/catkin_make_isolated/catkin build/colcon的区别

    1 catkin make catkin make 是第一个构建catkin工作区的脚本 xff0c 因此在许多教程中使用 它有几个缺点 xff08 需要包中的非标准逻辑来声明跨包目标依赖关系 xff09 和限制 xff08 不能处理普通的
  • 关于Segmentation fault (core dumped)几个简单问题

    有的程序可以通过编译 xff0c 但在运行时会出现Segment fault 段错误 这通常都是指针错误引起的 但这不像编译错误一样会提示到文件一行 xff0c 而是没有任何信息 一种办法是用gdb的step 一步一步寻找 但要step一个
  • CUDA C 编程指南

    CUDA C Programming Guide CUDA C 编程指南 导读 田子宸 浙大水硕在读 184 人 赞同了该文章
  • 2014华为校招机试高级题——if语法中的括号判断

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