import java.util.*; public class Solution { /** * * @param s string字符串 * @return bool布尔型 */ public boolean isValid (String s) { // write code here Stack<Character> st =new Stack<>(); char [] i =s.toCharArray(); for( int n=0;n<i.length;n++ ) { if (i[n] == '{') { st.push('}'); continue; } if (i[n] == '(') { st.push(')'); continue; } if (i[n] == '[') { st.push(']'); continue; } else{ if (st.empty() || i[n] != st.lastElement()) { return false; } st.pop(); } return true; } } 哪里错乱
时间: 2023-11-28 07:49:01 浏览: 79
在你的代码中,有一个问题是你的 return true 应该在 for 循环之后,而不是在循环内。此外,如果字符串 s 不是有效的括号序列,你的代码只返回 false,但是应该返回 true 或 false,因此你需要在 for 循环之后添加一个 return false 语句。以下是修改后的代码:
```java
import java.util.*;
public class Solution {
/**
*
* @param s string字符串
* @return bool布尔型
*/
public boolean isValid (String s) {
// write code here
Stack<Character> st = new Stack<>();
char [] i = s.toCharArray();
for (int n = 0; n < i.length; n++) {
if (i[n] == '{') {
st.push('}');
continue;
}
if (i[n] == '(') {
st.push(')');
continue;
}
if (i[n] == '[') {
st.push(']');
continue;
}
else {
if (st.empty() || i[n] != st.lastElement()) {
return false;
}
st.pop();
}
}
return st.empty();
}
}
```
阅读全文