问题简介
编程思路
- 使用栈的思想进行编程
- 当出现[{(是入栈的时机。右侧的括号则是出栈的时机。
- 正常情况下,最后的字符串为空
编写程序
第一个版本
public boolean isValid(String s) {
LinkedList<Character> characters = new LinkedList<>();
for (int i=0; i<s.length(); i++) {
char ch = s.charAt(i);
if (ch == '{' || ch == '(' || ch == '[') {
characters.addFirst(ch);
continue;
}
Character character = characters.removeFirst();
if (ch == '}' && character != '{') {
return false;
}
if (ch == ']' && character != '[') {
return false;
}
if (ch == ')' && character != '(') {
return false;
}
}
return true;
}
上述程序,无法正确的应对如下的情况
第二个版本-无法处理剩余字符串不为空
无法应对如下的情况
第三个版本-AC版本
public boolean isValid(String s) {
LinkedList<Character> characters = new LinkedList<>();
for (int i=0; i<s.length(); i++) {
char ch = s.charAt(i);
if (ch == '{' || ch == '(' || ch == '[') {
characters.addFirst(ch);
continue;
}
if (characters.isEmpty()) {
return false;
}
Character character = characters.removeFirst();
if (ch == '}' && character != '{') {
return false;
}
if (ch == ']' && character != '[') {
return false;
}
if (ch == ')' && character != '(') {
return false;
}
}
return characters.isEmpty();
}
总结
今天是会,中午玉米还洒了一地,今天一直在编程啥的,中午则是跟我妈一起买了韭菜,可能我妈想要在我走之前在多吃几份饺子,中午做的饺子不知道为啥比较苦。
最近看了一个爱情神话的电影,我很喜欢,也喜欢徐峥,也喜欢节奏,也喜欢生活。