2017年华为优招机试题_括号匹配_编程题
来源:互联网 发布:ubuntu 17.10 安装wine 编辑:程序博客网 时间:2024/06/04 18:52
括号匹配_编程题
给定一个字符串,里边可能包含"()"、"[]"、"{}"三种括号,请编写程序检查该字符串中的括号是否成对出现,且嵌套关系正确。 输出: true:若括号成对出现且嵌套关系正确,或该字符串中无括号字符; false:若未正确使用括号字符。 实现时无需考虑非法输入。
输入描述:
输入为:
字符串
例子:(1+2)/(0.5+1)
输出描述:
输出:true | false
例子:true
示例1
输入
(1+2)/(0.5+1)
输出
True
Java方法1:
import java.util.Scanner;
import java.util.Stack;
public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
while (sc.hasNext())
{
/** 利用栈先进后出(FILO)特性*/
Stack<Character> stack = new Stack<>();
String str = sc.nextLine();
char[] cs = str.toCharArray();
for (int i = 0; i < cs.length; i++)
{
if (cs[i] == '(' || cs[i] == '{' || cs[i] == '[')
{
stack.push(cs[i]);
}
else
{
if (cs[i] == ')')
{
if (stack.peek() == '(')
{
stack.pop();
}
}
if (cs[i] == '}')
{
if (stack.peek() == '{')
{
stack.pop();
}
}
if (cs[i] == ']')
{
if (stack.peek() == '[')
{
stack.pop();
}
}
}
}
if(stack.isEmpty()){
System.out.println("true");
}
else{
System.out.println("false");
}
}
}
}
Java方法2
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext())
{
String str=sc.nextLine();
countBrackets(str);
}
}
/** 判断该字符串括号是否成对出现,且嵌套关系正确*/
public static void countBrackets(String str){
int Big=0,Mid=0,Min=0;
char[] charArr = str.toCharArray();
for(int i=0;i<str.length();i++){
if(charArr[i]=='{'){
Big+=1;
}
if(charArr[i]=='['){
Mid+=1;
}
if(charArr[i]=='('){
Min+=1;
}
if(charArr[i]=='}'){
Big-=1;
}
if(charArr[i]==']'){
Mid-=1;
}
if(charArr[i]==')'){
Min-=1;
}
if(Big<0||Mid<0||Min<0){
System.out.println("false");
return ;
}
}
if(Big!=0||Mid!=0||Min!=0){
System.out.println("false");
}else{
System.out.println("true");
}
}
}
C++方法1
#include <iostream>
#include <string>
#include <stack>
using namespace std;
int main()
{
stack <char> sta;
string s;
cin>>s;
for(int i=0;i<s.length();i++)
{
if(s[i]=='('||s[i]=='{'||s[i]=='[')
sta.push(s[i]);
else
{
if(s[i]==')')
{
if(sta.top()=='(')
sta.pop();
}
if(s[i]=='}')
{
if(sta.top()=='{')
sta.pop();
}
if(s[i]==']')
{
if(sta.top()=='[')
sta.pop();
}
}
}
if(sta.empty())
cout<<"true"<<endl;
else
cout<<"false"<<endl;
return 0;
}
- 2017年华为优招机试题_括号匹配_编程题
- 数据结构_括号匹配
- 2017年华为实习编程题
- 【数据结构_栈_Stack_0962】括号匹配问题
- 表达式括号匹配_洛谷1739_栈
- 洛谷 1739_表达式括号匹配_模拟
- 2016年华为面试题第一题
- 2013年华为编程大赛上机题
- 2016年华为优招编程题
- 括号匹配_boolan(博览网)_第三门课_第三周_作业
- 数据结构(严蔚敏)顺序栈_括号匹配的检验
- 08_栈的实例1---括号匹配
- 括号匹配编程题--python
- [编程题]括号匹配问题
- 2016年华为机试题
- 2016年华为校招机试题
- 2017年华为Fx计划在线机试题(详解)
- 华为2014机考题_判断if括号是否匹配_堆栈
- 小问题可能存在大问题,希望大神帮忙解答。Spark本地运行模式中单线程与多线程问题之setMaster("local")可以运行,但是设置成setMaster("local[3]")或setMaste
- Vue.js学习笔记:v-no绑定事件
- vue.js报错 [Vue warn]: Cannot find element: #app
- php 几个比较实用的函数
- centos7安装kvm虚拟机
- 2017年华为优招机试题_括号匹配_编程题
- hadoop32
- PTN设备标准规范
- C#常用控件属性及方法介绍
- 【Unity3D5.6版本使用(1)】自定义编辑器获取场景所有对象Tag生成Json
- python的社会形态模拟
- 独木舟上的旅行
- Dijkstr 算法 求单源最小路径
- docker--docker入门理论