给定一个字符串,仅由'('和')','{'和'}','['和']'组成,请问这个字符串是否是一个合法的括号序列? 输入 一行一个字符串,长度小于2000 输出 输出Yes或No 样例输入 Copy ()([]){} 样例输出 Copy Yes用java实现
时间: 2023-08-12 08:06:33 浏览: 113
java代码-使用java输入一个字符串,判断该字符串是否是回文,是输出“Yes”,否输出“No”.的源代码
好的,这是一个 Java 实现的例子:
```java
import java.util.*;
public class Main {
public static boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
Map<Character, Character> mapping = new HashMap<>();
mapping.put(')', '(');
mapping.put('}', '{');
mapping.put(']', '[');
for (char c : s.toCharArray()) {
if (mapping.containsKey(c)) {
char topElement = stack.empty() ? '#' : stack.pop();
if (topElement != mapping.get(c)) {
return false;
}
} else {
stack.push(c);
}
}
return stack.empty();
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
if (isValid(s)) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
}
```
同样地,这个算法的时间复杂度是 $O(n)$,其中 $n$ 是字符串的长度。
阅读全文