题目描述
五笔的编码范围是a ~ y的25个字母,从1位到4位的编码,如果我们把五笔的编码按字典序排序,形成一个数组如下:
a, aa, aaa, aaaa, aaab, aaac, … …, b, ba, baa, baaa, baab, baac … …, yyyw, yyyx, yyyy, 其中a的Index为0,aa的Index为1,aaa的Index为2,以此类推。
* 编写一个函数,输入是任意一个编码,比如baca,输出这个编码对应的Index;
* 编写一个函数,输入是任意一个Index,比如12345,输出这个Index对应的编码。
题目分析
如果你之前做过另一个题目,“求字符的所有组合,当输入的字符串中含有相同的字符串时,相同的字符交换位置是不同的排列,但是同一个组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。” 那么这个题目一出来起码不会觉得特别无从下手,其实就算没做过也不会特别无从下手,因为就是穷举利器嘛(即使写成漂亮的递归,仍然不能摆脱穷举的命运)。
这里自然不是为了分析这个递归穷举法(也许之后我会再单独写一篇阐述一下下)。所以技巧还是需要一些的。将题目要求的字符串排列组合起来,如下图示