编码问题

假定一种编码的编码范围是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,以此类推。 编写一个函数,输入是任意一个编码,输出这个编码对应的Index.


 输入描述:    输入一个待编码的字符串,字符串长度小于等于100.

 输出描述:    输出这个编码的index

 输入baca

 输出16331


本题目主要需要了解题目所述的字典序。首先可以分成25个大块,每块是以字母a-y开头,如果长度为4,那么第一位确定,剩下3位一共有25 * 25 *25种情况,如果长度为3,证明有一个空,就是25 *25,长度为2,两个空只剩一个位置可以是25个字母中的任意一个,长度是1,只剩a,这一种情况。所以一共是25^3+25^2+25+1


例:bcd

第一位是b所以处在第二大块,result += 1 * (25^3+25^2+25+1)

第二位是c, result += 2 *(25^2+25+1)+1

第三位是d, result += 3* (25+1)+1 (加一是因为最前面有个空)

第四位是空,不管,因为空就是第一个result = 17658



©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。