一、问题描述
功能描述:判断一个字符串中的"( )"是否配对
输入: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