假定一种编码的编码范围是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