主要采用的是库函数的方法,isdigit,stoi.
isdigit可以判断单个字符是否是数字,stoi可以将多个字符(多位数,复数)转换成数字。
判断数字可以结合isdigit给出对应的函数。
点击查看代码
bool isNumber(const std::string& token) {
// Check if the token is a number (positive or negative)
return (isdigit(token[0]) || (token.size() > 1 && isdigit(token[1]) && token[0] == '-'));
}
stoi这样用
点击查看代码
stk.push(stoi(tokens[i]));}
这里给出题目案例
点击查看代码
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<int>stk;
int sz=tokens.size();
for(int i=0;i<sz;i++){
if(isNumber(tokens[i])){
stk.push(stoi(tokens[i]));}
else{
int num1=stk.top();
stk.pop();
int num2=stk.top();
stk.pop();
char ch=tokens[i][0];
switch(ch){
case '+':
stk.push(num2+num1);
break;
case '-':
stk.push(num2-num1);
break;
case '*':
stk.push(num2*num1);
break;
case '/':
stk.push(num2/num1);
break;
}
}
}
return stk.top();
}
private:
bool isNumber(const std::string& token) {
// Check if the token is a number (positive or negative)
return (isdigit(token[0]) || (token.size() > 1 && isdigit(token[1]) && token[0] == '-'));
}
};