Problem:

Implement a basic calculator to evaluate a simple expression string.

The expression string contains only non-negative integers, +-*/ operators and empty spaces . The integer division should truncate toward zero.

You may assume that the given expression is always valid.

Some examples:

"3+2*2" =
" 3/2 " =
" 3+5 / 2 " =

Note: Do not use the eval built-in library function.

Solution:

字符串分成两种情况:数字num和运算符op,结果设为res,考虑到先乘除后加减的运算法则,设中间数mid优先计算乘除,再与res相加.

*> C++ version

 class Solution {
public:
int calculate(string s)
{
int res=, num=, op='+', i=, mid=;
while(i<s.size())
{
num = ; ////每一轮要初始化num
//获取一整个数字存储在num中
if(isdigit(s[i]))
{
while(i<s.size()&&isdigit(s[i])) //连续数字字符作一个数
{
num = num*+(s[i]-'');
i++;
} //获取运算符存储在op中
if(op=='+'||op=='-')
{
res = res+mid;
mid = num*(op=='-'?-:);
}
else if(op=='/')
{
mid = mid/num;
}
else if(op=='*')
{
mid = mid*num;
}
}
else if(s[i]==' ') //不要漏了开头空格这种情况= - =它喵被摆了一道
i++;
else
{
op=s[i];
i++;
}
}
res = res+mid;
return res;
}
};

最新文章

  1. 修复 Visual Studio Error “No exports were found that match the constraint”
  2. 1.jenkins持续集成-jenkins安装
  3. Beta版本——第三次冲刺博客
  4. .NET跨平台:再见dnx,你好dotnet cli
  5. Find Minimum in Rotated Sorted Array leetcode java
  6. Material Design入门(三)
  7. 前端框架与UI搭配
  8. 关于MYSQL group by 分组按时间取最大值的实现方法!
  9. Github/Eclipse管理Maven项目
  10. sql 给数据库表 字段 添加注释
  11. Windows 7无线网卡启用wifi共享蓝屏!
  12. iframe 透明
  13. 了解JavaScript的执行上下文
  14. MyEclipse10.0安装jad反编译插件
  15. 工作总结:VS2010/MFC编程入门之十六(对话框:消息对话框)
  16. phantomjs初次认识
  17. 201521123102 《Java程序设计》第11周学习总结
  18. CentOS 7 安装Java 1.8
  19. vue全局变量的使用
  20. 百度TTS的来由

热门文章

  1. Mysql 从入门到遗忘
  2. nodejs的某些api~(二)crypto加密模块
  3. Callable和Future、FutureTask的使用
  4. java 字符与ASCII码互转
  5. 【BZOJ3289】Mato的文件管理 莫队+树状数组
  6. 利用pandas对numpy数组进行简单的科学计算
  7. 第二篇 - python爬取免费代理
  8. 常用工具类(System,Runtime,Date,Calendar,Math)
  9. 精读Hadamard Response论文
  10. (基础)codeVs2235 机票打折