优化一下class Solution { public: bool isValid(string s) { stack<char>mystack; int length = s.length(); if(length % 2 != 0) return false; for(int i = 0; i < length; i++){ if(s[i] == '[' || s[i] == '(' || s[i] == '{' ){ mystack.push(s[i]); continue; } if(mystack.empty() && (s[i] == ')' || s[i] == ']' || s[i] == '}')) return false; if((s[i] == ']' && mystack.top() != '[') || (s[i] == ')' && mystack.top() != '(') || (s[i] == '}' && mystack.top() != '{') ) return false; else{ mystack.pop(); continue; } } if(mystack.empty()) return true; else return false; } };
时间: 2024-04-12 20:28:38 浏览: 114
利用C++实现从std::string类型到bool型的转换
以下是优化后的代码:
```cpp
class Solution {
public:
bool isValid(string s) {
stack<char> mystack;
for(char ch : s){
if(ch == '[' || ch == '(' || ch == '{'){
mystack.push(ch);
}
else{
if(mystack.empty()){
return false;
}
if((ch == ']' && mystack.top() != '[') || (ch == ')' && mystack.top() != '(') || (ch == '}' && mystack.top() != '{')){
return false;
}
mystack.pop();
}
}
return mystack.empty();
}
};
```
优化的主要改进包括:
- 使用范围-based for 循环遍历字符串,简化代码。
- 删除了不必要的长度检查,因为如果字符串长度为奇数,显然无法匹配。
- 删除了不必要的 continue 语句。
- 最后直接返回 mystack.empty() 的结果,避免使用 if-else 语句。
阅读全文