华为机试题---判断一个字符串中的"( )"是否配对

来源:互联网 发布:淘宝新品期是多少天 编辑:程序博客网 时间:2024/05/16 18:27

一、问题描述

功能描述:判断一个字符串中的"( )"是否配对
输入:if(a.equals(a))
输出:true

要求实现方法:
public boolean isDouble(String data)
{
    //TODO
    return false;
}

二、算法

/** * Judges whether the number of '(' is equal to the number of ')'  * @param data * @return */public boolean isDouble(String data) {Stack<Character> stack = new Stack<Character>();String biStr = String.valueOf(data);boolean flag = false;char[] arr = biStr.toCharArray();for (int i = 0; i < arr.length; i++) {if (arr[i] == '(') {stack.push(arr[i]);} else if (arr[i] == ')') {if (!stack.isEmpty() && stack.get(0) == '(') {stack.pop();} else if (stack.isEmpty()) {flag = false;return flag;}} else {// nothing}}if (stack.isEmpty()) {flag = true;}return flag;}

三、测试类

package com.albertshao.csi.interview;import java.util.Stack;/** * @author albertshao *  */public class Main18 {public static void main(String[] args) {Main18 m = new Main18();System.out.println(m.isDouble("if(a.equal(sa))"));}/** * Judges whether the number of '(' is equal to the number of ')'  * @param data * @return */public boolean isDouble(String data) {Stack<Character> stack = new Stack<Character>();String biStr = String.valueOf(data);boolean flag = false;char[] arr = biStr.toCharArray();for (int i = 0; i < arr.length; i++) {if (arr[i] == '(') {stack.push(arr[i]);} else if (arr[i] == ')') {if (!stack.isEmpty() && stack.get(0) == '(') {stack.pop();} else if (stack.isEmpty()) {flag = false;return flag;}} else {// nothing}}if (stack.isEmpty()) {flag = true;}return flag;}}
四、运行结果

true



0 0