OJ——华为编程题目:输入字符串括号是否匹配

package t0815;
/*
 * 华为编程题目:输入字符串括号是否匹配
 * 若都匹配输出为0,否则为1
 * 样例输入:Terminal user [name | number (1)]
 * 样例输出:0
 * Java版本
 */
/*
 * 个人总结:
 * (1)语法上Java的输入Scanner使用
 * (2)char[] arr=mxf.toCharArray()的使用,将输入的字符串转成字符数组;这样就可以一个
 *     一个的遍历
 * (3)算法上,这里使用了经典的入栈和出栈的思想
 * 
 */

import java.util.Scanner;
import java.util.Vector;

public class huawei_StringMatching {
    public static void main(String[] args){
        System.out.println("请按照规格输入字符串");
        Scanner ScStr=new Scanner(System.in);
        String sqy = ScStr.nextLine();    
        
        System.out.print(Check(sqy));        
    }
    public static int Check(String mxf){
        int count=0;
        int flag=1;
        char[] arr=mxf.toCharArray();    
        Vector<Character> vec=new Vector<Character>();
        for(int j=0;j<arr.length;j++){
            if(arr[j]=='(')
                {vec.add(arr[j]);count++;} //入栈,并且计数加1
            if(arr[j]=='[')
                {vec.add(arr[j]);count++;}//入栈,并且计数加1
            if(arr[j]==']'){
                if(vec.elementAt(count-1)=='[')
                {vec.remove(count-1);count--;}//出栈,并且计数减1
            }            
            if(arr[j]==')'){
                if(vec.elementAt(count-1)=='(')
                    {vec.remove(count-1);count--;}////出栈,并且计数减1
            }
        }
        if(vec.isEmpty())
            flag=0;  // 如果为空,说明可以正确匹配
        return flag;
    }
    
    
}

结果:

请按照规格输入字符串
Terminal user [name | number (1)]
0

posted @ 2015-08-16 14:35  好想雨的云  阅读(389)  评论(0编辑  收藏  举报