逆波兰表达式求值
2017-08-04 11:50
267 查看
题目描述:求逆波兰表达式的值。
在逆波兰表达法中,其有效的运算符号包括
样例:
思路:
如果当前字符为变量或者为数字,则压栈,如果是运算符,则将栈顶两个元素弹出作相应运算,结果再入栈,最后当表达式扫描完后,栈里的就是结果
c++中sting相关的知识:
1、string转换为int
使用 stoi函数
2、string转换为int,int转换为string。都可以使用stringstream。可以吞任意的类型,吐出任意类型。
int a = 10;
string b;
stringstream ss;
ss<<a;
ss>>b;
结果代码:
class Solution {
public:
/**
* @param tokens The Reverse Polish Notation
* @return the value
*/
int evalRPN(vector<string>& tokens) {
// Write your code here
stack<string> s;
int result = 0;
for(int i = 0;i != tokens.size();++i){
if(tokens[i]!="+" && tokens[i]!="-" && tokens[i]!="*" && tokens[i]!="/"){
s.push(tokens[i]);
}
else{
int ele1 = stoi(s.top());
s.pop();
int ele2 = stoi(s.top());
s.pop();
int ele3 = 0;
if(tokens[i]=="+")ele3 = ele2+ele1;
else if(tokens[i]=="-")ele3 = ele2-ele1;
else if(tokens[i]=="*")ele3 = ele2*ele1;
else if(tokens[i]=="/")ele3 = ele2/ele1;
result = ele3;
stringstream ss;
ss<<ele3;
string str;
ss>>str;
s.push(str);
}
}
return stoi(s.top());
}
};
在逆波兰表达法中,其有效的运算符号包括
+,
-,
*,
/。每个运算对象可以是整数,也可以是另一个逆波兰计数表达。
样例:
["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9 ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
思路:
如果当前字符为变量或者为数字,则压栈,如果是运算符,则将栈顶两个元素弹出作相应运算,结果再入栈,最后当表达式扫描完后,栈里的就是结果
c++中sting相关的知识:
1、string转换为int
使用 stoi函数
2、string转换为int,int转换为string。都可以使用stringstream。可以吞任意的类型,吐出任意类型。
int a = 10;
string b;
stringstream ss;
ss<<a;
ss>>b;
结果代码:
class Solution {
public:
/**
* @param tokens The Reverse Polish Notation
* @return the value
*/
int evalRPN(vector<string>& tokens) {
// Write your code here
stack<string> s;
int result = 0;
for(int i = 0;i != tokens.size();++i){
if(tokens[i]!="+" && tokens[i]!="-" && tokens[i]!="*" && tokens[i]!="/"){
s.push(tokens[i]);
}
else{
int ele1 = stoi(s.top());
s.pop();
int ele2 = stoi(s.top());
s.pop();
int ele3 = 0;
if(tokens[i]=="+")ele3 = ele2+ele1;
else if(tokens[i]=="-")ele3 = ele2-ele1;
else if(tokens[i]=="*")ele3 = ele2*ele1;
else if(tokens[i]=="/")ele3 = ele2/ele1;
result = ele3;
stringstream ss;
ss<<ele3;
string str;
ss>>str;
s.push(str);
}
}
return stoi(s.top());
}
};
相关文章推荐
- LintCode:M-逆波兰表达式求值
- 从中序表达式到逆序表达式(逆波兰式)(四则运算表达式求值)
- LeetCode-150. Evaluate Reverse Polish Notation (JAVA)逆波兰表达式求值
- NYOJ35-表达式求值(逆波兰式)java
- 从中序表达式到逆序表达式(逆波兰式)(四则运算表达式求值)
- 逆波兰表达式递归求值
- Leetcode 150 Evaluate Reverse Polish Notation (求值逆波兰表达式)
- 逆波兰表达式的转化与求值(python实现)
- 逆波兰表达式求值
- 线性结构——用栈实现波兰表达式求值。
- 逆波兰表达式求值
- LintCode 424-逆波兰表达式求值
- 逆波兰表达式及求值
- 第九届河南省程序设计大赛-NYOJ-1272-表达式求值(中缀式转后缀式 逆波兰表达式)
- 表达式求值(逆波兰式后缀表达式)
- LeetCode:波兰表达式求值(栈)
- LintCode_424_逆波兰表达式求值
- C语言简单计算器原理——表达式求值(采用逆波兰表达式和栈结合)
- 【算法】表达式求值--逆波兰算法介绍
- Lintcode 逆波兰表达式求值