zoukankan      html  css  js  c++  java
  • 华为上机练习题--括号匹配检測

    版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/zlw420123/article/details/35649497

    题目:

    输入一串字符串。当中有普通的字符与括号组成(包含‘(’、‘)’、‘[’,']'),要求验证括号是否匹配。假设匹配则输出0、否则输出1.

            Smple input:dfa(sdf)df[dfds(dfd)]    Smple outPut:0


    分析: 相似于括号字符匹配这类的问题, 我们能够模拟栈的操作来进行验证, 这样问题就简单了。 就是栈的操作


    代码例如以下:

    package com.wenj.test;

    import java.util.ArrayList;
    import java.util.List;

    public class TestMatchKuohao {
        
        public static void main(String args[]){
            String strIn = "dfa(sdf)df[dfds(dfd)]";
            
            TestMatchKuohao tm = new TestMatchKuohao();
            System.out.println(tm.matchKuohao(strIn));
        }
        
        public int matchKuohao(String strIn){
            if("" == strIn || null == strIn){//空串默认不配
                return 1;
            }
            String strTemp = strIn;
            char[] strC = strTemp.toCharArray();
            
            List<Character> cL = new ArrayList<Character>();
            for(int i=0; i<strC.length; i++){
                char temp = strC[i];
                switch(temp){
                case '(':
                    cL.add(temp);
                    break;
                case '[':
                    cL.add(temp);
                    break;
                case ')': //遇到右括号则出栈
                    if(cL.size() == 0){//假设栈空则说明括号匹配不上,直接返回1
                        return 1;
                    }else{
                        char tempC = cL.get(cL.size()-1);
                        if('(' == tempC){
                            cL.remove(cL.size()-1); //做出栈操作
                        }else{
                            return 1;
                        }
                    }
                    break;
                case ']':
                    if(cL.size() == 0){
                        return 1;
                    }else{
                        char tempC = cL.get(cL.size()-1);
                        if('[' == tempC){
                            cL.remove(cL.size()-1);
                        }else{
                            return 1;
                        }
                    }
                    break;
                default:
                    break;
                }
            }
            
            if(cL.size() == 0)
                return 0;
            else
                return 1;
        }
    }


  • 相关阅读:
    thinkphp自动映射分析
    thinkphp自动创建数据对象分析
    html模板输头部出现"&#65279"
    register_shutdown_function 函数详解
    mcrypt加密以及解密过程
    SVN不能解锁,报错:没有匹配的可用锁令牌的解决方法
    微信公众平台JSSDK开发
    PHP的UTF-8中文转拼音处理类
    PHP中文转拼音函数
    php生成mysql数据字典
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/9965571.html
Copyright © 2011-2022 走看看