题目:输入一串字符串,编写算法判断字符串中的括号是否匹配,如果匹配,输出true,否则输出false。
输入:一串字符串
输出:判断结果
java
/*利用栈实现判断字符串中的括号是否都是配对的
*依次让左括号进栈,若在扫描的过程中出现配对的右括号,则将相应的左括号出栈
*最终若栈为空则说明是配对的,反之则不是
**/
package example;
import java.util.Scanner;
import java.util.Stack;
public class Parenthesses {
public static void main(String[] args) {
System.out.print("请输入字符串: ");
Scanner scan = new Scanner(System.in);
String str = scan.next();
System.out.print("是否配对: ");
if (isComplete(str))
System.out.println("是");
else
System.out.println("否");
}
public static boolean isComplete(String s) {
Stack<String> stack = new Stack<String>();
while (!s.isEmpty()) {
String character = s.substring(0, 1); // 取字符串首字母
s = s.substring(1); // 剩余的字符串
if (character.equals("{") || character.equals("[") || character.equals("(")) {
stack.push(character); // 左括号进栈
}
if (character.equals(")") || character.equals("]") || character.equals("}")) {
if (stack.isEmpty()) // 首先检查栈是否为空
return false;
String leftChar = stack.pop(); // 左括号出栈
if (character.equals(")")) { // 检查左右括号是否匹配
if (!leftChar.equals("("))
return false;
} else if (character.equals("]")) {
if (!leftChar.equals("["))
return false;
} else if (character.equals("}")) {
if (!leftChar.equals("{"))
return false;
}
}
}
return stack.isEmpty();
}
}
思路来源于网络。