2014-04-03 编码分组打印(推理思维腾讯题)

题目:

腾讯:五笔的编码范围是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,以此类推。
1)编写一个函数,输入是任意一个编码,比如baca,输出这个编码对应的Index;
2)编写一个函数,输入是任意一个Index,比如12345,输出这个Index对应的编码。


思想:
一组以a为开头的编码如下:
a aa aaa aaaa aaab aaac......aaay
        aab aaba aabb aabc.....aaby
        ...............
        aay aaya aayb...............aayy
   ab aba abaa ..................................
首先,我们并不需要计算出所有的编码,然后查找,效率极低,本思想其实就是建立多级索引,采用分组的思想来解决:4个字母的编码每隔25次将出现一次3个字母的编码,3个字母的编码每隔(25+1)*25次出现一次2个字母的编码,2个字母的编码每隔((25+1)*25+1)*25次出现一次1个字母的编码,因此可反推出每隔组编码的间隔。首先用四个值来计算出,每组编码的间隔值。当输入任意编码时,依次根据每一个字母,算出组位置,然后相加;当输入任意索引时,将索引进行循环拆分,进行求解;


程序实现:
较简单,不实现,O(∩_∩)O哈哈~


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值