[A=B]攻略-第一章

A=B的第一章的解法和解释

前言

A=B是一个很好的游戏,建议各位去玩,商店链接

题目从简单到困难,有的时候梯度很大,争取慢慢把这系列做出来,主要是带题解的

不是很喜欢魔数写法,所以大概会更新地很慢

最后,这个游戏真的很有意思

1.1 A到B

没什么好说的

a=b

1.2 大写

a=A
b=B
c=C

1.3 去重

思路

显然我们最后要保留的状态是没有连续字母

只需要将重复的几个压成一个就行,不过要注意A=B这个语言的特殊性

代码

aa=a
bb=b
cc=c

1.4 去重 2

思路

同理,这个是把连续的a压没,

这里之所以会有aaa,而不是直接aa=是因为假如只压缩的可能会剩下来:例如aaa会被替换成a

,我们这么做的本质是将多的字母先压成两个,再把这两个消除掉

aaa=aa
aa=

1.5 排序

思路

研究语言的必经之路,排序,注意到我们现在在做的是替换字符串

我们的目的是希望各个字母都在其应该在的位置,但我们不知道数组下标,怎么样能达成这两个条件呢?

我们需要一个只看相邻的排序算法,也就是冒泡算法,实现起来不难,如下

代码

看到了吗,本质就是大的向后挪动,这个在单步运行时候看的更清楚

ba=ab
cb=bc
ca=ac

这个排序在之后会常用到的,当我们只关心字母数量之类的而不关心其位置的时候

1.6 比较

思路

比较a和b的多少,还记得去重怎么做的吗?把两个相同的数摁在一起消除

这个题也一样,我们把两个不同的字母摁在一起消除,剩下的就是多的字母

值得一提的是压字母存在两个情况

代码

ab=
ba=
aa=a
bb=b