代码
import java.util.*;
public class Solution {
/**
*
* @param s string字符串
* @return bool布尔型
*/
public boolean isValid (String s) {
// write code here
/**
* 使用一个栈来存储
*/
// 1.判断,避免愚蠢的字符
if(s.charAt(0) == ')' || s.charAt(0) == ']' || s.charAt(0) == '}'){
return false;
}
// 2.实例化一个栈
Stack<Character> stack = new Stack();
// 3.遍历字符串
for(int i = 0; i< s.length() ;i++){
// 3.1 判断进栈还是出栈
if(s.charAt(i) == '(' || s.charAt(i) == '[' || s.charAt(i) == '{'){
stack.push(s.charAt(i));
}else{
// stack.peek() == s.charAt(i) ? stack.pop() : return false; -------------< 错误位置
}
}
}
}
错误原因
1.illegal start of expreesion
- 不合法的开始表达
- 错误原因:三元表达式中只能存放合法的表达式,意思就是三元表达式后面的表达式必须计算之后有值
- return false 不是合法有值的表达式
2.not a statement
- 不是一个语句
- 三元表达式是一个表达式,也就是说不能独立的成为一个语句进行运行,他必须得有有个等号,将表达式的元素结果赋值。
解决方法:换成if -else结构 ,因为不执行的表达式可以用于判断。
原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/277770.html