前言
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