00:00
好成,如刚才我们分析的一样,这个表达式呢,我们没有考虑到多位数的问题,现在呢,我们来处理多位数的问题,加一三十。好,我们来做一个处理,那也就是说这个地方我们要增加一个逻辑。这里我们需要增加。一个逻辑。什么逻辑呢?就是处理,哎,处理多位数。处理多位多位数的问题。对,处理没问题,那你想一想,这个问题怎么解决呢?其实解决的核心。它这些都不需要变化,如果扫描是一个操作符,因为你数字里面不可能操作符嘛,所以说整个这个衣服这一大块不需要做任何变化,就这一大块都没毛病。这大块都没毛病,主要的毛病是在这里,因为你这帮你直接把CH做了一个处理,这是有有问题的。那你怎么办呢?好,同学们这就就要动脑筋了,我的思想是这样子的啊,我的想法是这样子的。
01:06
我的想法呢,是先向就说我先设计一个变量,这个变量是专门用来做拼接的啊,我们我的解决事啊处理。处理多位数的一个思路,我的思路如此,这边第一个我先定义一个变量,叫keep number。先。先定义。定义。一个变量。啊,变量叫keep。Keep number,那么这个keep number是个字符串,字符串它用来专门做拼接的,它是做拼接的,做拼接,做拼接工作拼接。啊,第二个呢,我们要怎么来决定它,它下面不是一个字符串呢,所以说你还得往前面探一位,就是每次你扫描的index的时候,你再往前面看一位,但是index不要动。
02:02
你往前面探一下说,诶,下一位是不是一个银川符。如果它不是运算符了,那就OK了啊,所以说还要使用每次啊,每次每次。每次要。每次要向前向。向哪里,向index的,向index的这个前面,前面这个字符看一位。测看测试一下,测试一下看看。看看是不是。是不是这个字符,呃,字符串啊,是不是这个运算符。好运算符,再做处理运算符。然后再做处理,然后处理好我的逻辑就已经来了啊,那现在呢,同学们看,首先我在上面先定一个特别重要的变量,叫keep number。啊,不着急啊,这个东西就是练习大家一种思维方式啊,你这个代码能写出来,说实话,那有些代码你自然就会感觉到并不难了啊同学们好,这个很有用,那现在呢,我来我来做一个判断,注意听啊,如果。
03:13
你在探的时候呢,有一个危险,就是有时候你往下面探还能探成功,但是有时候你假设已经到最后一位,你你再往前面探,你就一探就探空了,探到一个零指针直接报错。说碳的时候还不能乱探,就是你加一往你本身想像index,比如说你现在你现在什么逻辑呢?你index到这了啊到这了。你然后你先前面看,诶这个前面这个是不是一个是不是一个是是不是一个运算符啊,你可以往前面看,但是有一个有一个情况你很危险,就是假设已经到最后了,你再往前面一看,结果是个控制帧程序直接崩溃。所以你还不能清晰的看,所以你现在还要处理一个什么逻辑呢?就是说如果就是这个表达式,最后你就别看了,直接把它拼接进去就行了,好,所以说这边有个逻辑叫做如果是。
04:02
如果已经到,如果已经到这个表达式的最后了,表达式最后,那么直接直接将将这个keep number转成整数加进去,也不用再去拼了,它也也可能拼过,也可能没有拼过,不知道,因为你最后一位呢,也可能是多位数,我写了啊,如果。Index,它就等于了。它就等于这个什么呢?就是你这个表达式的长度啊,减一什么意思。就是你现在index已经到了最后了。为什么要减一呢?因为你应X是从零开始算了嘛,这个说明你已经到屁股后边,千万不要再看了啊,说这个值就说已经到最后了,那这个时候呢,你就做一件事情把这个转。把这个逻辑扔进去。各位把这个逻辑扔进去呢,你这个地方就不是CH了,而是。Keep number。因为这个keep可能已经。
05:02
可能已经转了好几圈了,已经。你要想象它一个一个想象能力啊,他已经探了好几圈了,好把它转完了,过后呢,不用犹豫,直接把它压进去。好这个逻辑啊,就说这是最后最后一个呢,你就直接把这keep number啊,把它转成一个整数压进去,当然这个keep number也不一不一定就是单位数,它有可能是多位数啊好L是逻辑。Else呢?1ELSE就是说呃,如果,呃如果他不到最后一位,那么你可以向前探一位。向。像什么啊?像这个index的前面后后一位吧,应该叫后啊后一位。像index的后面字符我说错了啊,可能大家理解起来有点麻烦,后面的字符像应该后面看一位测试一下,看看是不是运算符,那这个对我来说还是比较简单的啊,但是注意index不要动。
06:00
Index不能动啊,一你的index一旦动了的话,就相当于跳过了,那下面那个扫描全部都错的,那这个也很简单,如果我们判断算符是怎么判断的呀。就这个逻辑啊,我们前面不是写过这个判断运算符的这个代码吗?诶判断运算符的代码是这个拿来为我所用。对。那你看我怎么写啊?哦,我找到这个位置。哎,是在。哪儿去了?在这OK没问题,那么offer,但是我要取的向扣取位,那就应该怎么取呢?就是这样取的,这个有点有有有有要动脑筋啊,要这个逻辑有点有点麻烦啊,注意听他这样子的1T。Index。加一,因为你你要看一后面取嘛,然后取的是index加二。我们动in X啊,那取这个取出来它也是一个字符串,取出来是个字符串的话呢,要把它转成一个BY切片。
07:04
好,把它改成一个BY曲片。OK。改成一个BY缺边过后,里面你还要取出它的第零个值。取出来0T0格式,你还要把它转成一个特尔。啊,可能有些同学已经看懵了。但应该还好。啊,什么意思?呃,就是这个表达式,往后面看一下它是什么,然后把它转成一个BY这种为什么代码有错啊。我们来看看这代码为什么会有错误。好,Bit切片,我我一步一步来啊。多了一个括号,没有括号看一下啊,这个地方先取出啊切片。Bite切片。啊对,这个切边这张写写错位置了。好,这样这样就对了啊,这后面应该多了一个括号。
08:05
没没毛病的啊,大家看能不能看懂,呃,再再看一下,再给讲一下啊,这个是代表向后探一位。取出后面这一位,然后呢,把它转成一个BY的切片,再取出第一个,再取出int,看它是不是,这不算,如果是,如果它是一个操作符,好说明这个就结束了。注意听,如果是操作符,说明这个事情就结束了,那么你这个逻辑呢,就可以这样做了,也就是说你在后面再看一会,他已经是预算符了,你就不需要再去拼接了,那么就把它做完,做完一有一个特别重要的事情,把这个清空。如果你不清空的话,它会在原先的基础上继续拼接好写完了。这个相当于就做完了啊,这下面的代码这个没有用了。那大家看这个逻辑,就说除以多位数,我先看是不是到最后,哎这个地方为什么他说没有定义k number少了一个B。大家看这个逻辑啊,先看是不是到最后,如果如果是到最后直接把它扔进去,如果没有到最后,我就向后看一下是不是是不是一个操作符,如果它是一个操作符,我们就往里面扔,那么如果不是操作符怎么办呢?继续该怎么走,继续走。
09:15
继续拼,那么你拼接的动作在哪里完成的呢?好,拼接动作我们少了一个动作啊,来拼接这边还有一个动作。最后就说,如果不是这个地方,我们再把这个拼接的工作完成,怎么完成呢?怎么怎么完成这个工作啊,我们看一看,现在是清空。啊,到这儿如果是最后一位,我们就压进去。好,我们还有一个拼接的工作,在哪做比较合适,我们看一下说明是个数啊,说明是个数就直接拼了。就keep在上面拼number。加单CH完事儿。就说来了过是数,我现在拼接,因为你number管原来是空的嘛,啊就拼一个进去再来再拼再拼再拼,后面决定是不是再继续拼接还是加进去,取决于下面这个业务逻辑好代码就写完了。
10:09
啊,这个就拼进去了啊好,我把这个地方写到上面去。这儿。好,这个逻辑就完成了。好,同学们来看看这代码有没有毛病啊,我把这个就删掉了,这个没有用了,删掉。好,把这个逻辑就就就保存到这了啊,我们看这个逻辑,现在呢,我已经把它做成了一个30加三乘以六减四们看逻辑到底正确还是不正确,走一个逻辑。好,同学们看一下,现在呢,我们这个30加上呃,这一个18等于48 48减去一个四等于44是正确的,好是正确的啊,那这就没有毛病,没有毛病那说明这个是可以的,那么我们可以把这个位数再调的大一点。
11:01
啊,把这个位数调大一点,比如说我在这个基础上把这个调大一点,比如调成30。这个数就很大了,如果这个还是正确的,说明它应该是没没错误了,就是30加上一百八等于210,二百一减去一个四对吧,等于206。206走。206出来。206正确的好2000,那么我们可以把它再做一点运算,比如说诶,在这个基础上,咱们再做一个减法运算,再减去一个六。那应该等于多少呢?200。好正确正确啊,那呃,当然了,我这个代码呢,就完成到这就基本上我认为就可以了,因为我们并不是教大家去写一个就是这个这个计算器,因为写计算器代码,一个完整的代码,我给大家欣赏一下。啊,就是说你要写一个非常完整的这个有大括号,还有这个小括号的代码呢,我这里也有一个资料,大家可以去看一看,OK,我把这找出来了。
12:10
算法项目资料。好,这有一个暂实现计算器的完整代码,是CPP版的,就C加加版的,打开看一下它的源码。好,这个呢,相对来说完成的比较比较全会一点。好,大家可以看一下,还是比较麻烦啊,他做了好多判断。好多了,好多判断。你看这是有300多场啊,然后这边还有个头头文件。对,这边还有个头文件啊,如果有兴趣的同学呢,可以把这个去再看一看,但是我建议大家呢,就也没必要去看了,你们只需要就是需要把老师讲的这个掌握了就行,就是说我们讲这个站的这个目的是什么呢?我们讲这个站的目的就是让大家体验一下这个运算,它的底层是什么运运行的第二个呢。
13:06
让大家体会到站的一个使用的一个场景啊,这个呢,我是要求同学们啊,就说你把那个最简单的那个写出来,就说第一个版本的同学们要求能够写出来啊好,我把这个呢,给大家整理到笔记里边去,来同学们。整理一下我们刚才讲的是什么东西,来走一个案例。那我们前面讲的是对这一个占的一个综合的计算器的一个应用,对不对,好,那么我们把它整理到笔记里面去。占的计算器的一个综合应用。对。那这个我们做了哪些工作呢?首先第一个我们分析了实现的思路。分析了实现的思路,对实现的一个思路,这个对我来说是尤为重要,就说同学们在做这个编程的时候啊,就是不管你将来做什么编程,你一定先把这个思路理理清楚。
14:07
然后再写代码。啊,不然的话,呃,你可能后边就写蒙圈了。代码实现好,我把这个思路先给同学们放到笔记里面去,这是我的思路。当然这个呢,也仅仅是韩老师的思路,对不对,你有可能在别的地方看,诶怎么那那个人的思路跟老师不一样呢,也也可以,也也有可能啊,也有可能。好,我把它放在笔记里面去,具体的代码实现呢,我把它给同学们整理到笔记里面去啊,我们看一下代码有哪些。好,因为代码比较多,所以说这块呢,老师也就直接把它复制一下就行了啊,代码太多了。好,就一个粘贴呢,比较慢。好,这是我们的这个思路整理。好,同学们,关于站的一个综合应用,我们就给大家讲解到这里。
我来说两句