请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

基本计算器 II问题

https://img1.sycdn.imooc.com//szimg/61c95ab3091be28e08080641.jpg

这道题就是先进行乘除在计算加减,但是呢题解那里有个疑问

num = num * 10 + s[i].charCodeAt() - '0'.charCodeAt();、

但是这里这个num为什么要这么计算呢搞不懂?

正在回答

1回答

因为数字不仅仅可能只有一位,而可能有多位。如何通过 “123” 这个字符串得到 123 这个数字,就是用这个式子。


可以执行一下 "123+456" 这个字符串,看一下在解析这个字符串的过程中,程序的每一步是如何运行的?有没有走这句话?走这句话的时候,是在做什么?整个程序最终是如何一步一步得到计算结果的?


继续加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 慕粉3884565 #1
    老师就是有没有其他方式解决这个问题呢,通常不会想到对num做这么多运算
    回复 有任何疑惑可以回复我~ 2021-12-29 13:49:23
  • liuyubobobo 回复 提问者 慕粉3884565 #2
    这个操作是把一个字符串转换成一个数字的基本方法。这不是想得到想不到的问题,这是标准的做法。(没有接触过计算机的同学,也想不到使用 bfs 求解无权图的最短路径。但如果要求解无权图的最短路径,bfs 是标准做法。)
    
    依然是,请先解决这个问题:如何通过 “123” 这个字符串,得到 123 这个数字?如果你解决了这个问题,把这个问题的方法套到这个表达式计算中就好。在表达式计算中,对于多位数字的转换,就是“给你一个字符串,将这个字符串转换成相应的数字”这个子问题。
    
    当然,标准库中可能会提供一些函数能够直接做字符串到数字的转换,比如 C 中的 atoi 函数,比如 Java 中的 Integer.parseInt 函数,你可以先在表达式中,将整个表示数字的字符串截取出来,然后用这些函数去做转换。但这些函数底层的逻辑,依然是这个式子。
    
    继续加油!:)
    回复 有任何疑惑可以回复我~ 2021-12-29 14:15:18
  • 提问者 慕粉3884565 回复 liuyubobobo #3
    懂了这个相当于是一个公式而已,学了才知道。
    回复 有任何疑惑可以回复我~ 2022-01-04 10:46:20
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信