算法第二十一天
227. 基本计算器 II
题目链接:https://leetcode.cn/problems/basic-calculator-ii/description/
优秀题解:https://leetcode.cn/problems/basic-calculator-ii/solutions/91271/chai-jie-fu-za-wen-ti-shi-xian-yi-ge-wan-zheng-ji-/
1.看到题目第一想法:可以用栈来解决优先级问题:遇到加减就把数直接压栈(负数的话压入相反数),遇到乘除就直接和栈顶元素计算并更新栈顶,最后把栈里所有数加起来就是结果。
2.遇到的困难:一开始不小心在函数里重复写了 class Solution,还把头文件写在了错误位置,直接导致编译报错,破坏了类的结构;直接把 char 传给 isdigit 会有未定义行为,因为如果 char 是负数,会触发 undefined behavior,导致程序运行异常。
3.收获心得:像空格处理、运算符优先级的括号、isdigit 的安全调用、头文件的包含,这些看起来很小的细节,却能直接决定代码能不能跑起来。尤其是多位数的读取和最后一个数字的处理,很容易漏掉。
