Tencent2017秋招笔试题--求编码的index
2017-07-21 11:15
225 查看
题目:假定一种编码的编码范围是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.
解题:
给定编码,假设为bcde,需要确定字典顺序小于它的共多少个。
1位的,<= b即可,2个;
2位的, 若第1位 < b(只有1个a),第2位有25种选择,若第1位 = b,第2位有 <= c(3)种选择,即共(1*25 + 3)个;
3位的,同理,第1位 < b (一个a),第2位和第3位各25种选择,
第1位 = b,第2位 < c (2),第3位有25种选择,
第1位 = b,第2位 = c,第3位有 <= d (4)种选择,即共(1*25*25+2*25+4)个;
4位的,同理,共(1*25*25*25 + 2*25*25 + 3*25 + 5)个。
可得到bcde的index。
这里要注意,输入的编码可能小于4位,做这样一个处理,比如输入bc,则bc与bcaa的index值差为2,计算出bcaa的index再减去差值即可。
完整C++代码:
baac … …, yyyw, yyyx, yyyy 其中a的Index为0,aa的Index为1,aaa的Index为2,以此类推。 编写一个函数,输入是任意一个编码,输出这个编码对应的Index.
解题:
给定编码,假设为bcde,需要确定字典顺序小于它的共多少个。
1位的,<= b即可,2个;
2位的, 若第1位 < b(只有1个a),第2位有25种选择,若第1位 = b,第2位有 <= c(3)种选择,即共(1*25 + 3)个;
3位的,同理,第1位 < b (一个a),第2位和第3位各25种选择,
第1位 = b,第2位 < c (2),第3位有25种选择,
第1位 = b,第2位 = c,第3位有 <= d (4)种选择,即共(1*25*25+2*25+4)个;
4位的,同理,共(1*25*25*25 + 2*25*25 + 3*25 + 5)个。
可得到bcde的index。
这里要注意,输入的编码可能小于4位,做这样一个处理,比如输入bc,则bc与bcaa的index值差为2,计算出bcaa的index再减去差值即可。
完整C++代码:
#include <iostream> #include <map> #include <string.h> using namespace std; map<char, int> dic {{'a', 0}, {'b', 1}, {'c', 2}, {'d', 3}, {'e', 4}, {'f', 5}, {'g', 6}, {'h', 7}, {'i', 8}, {'j', 9}, {'k', 10}, {'l', 11}, {'m', 12}, {'n', 13}, {'o', 14}, {'p', 15}, {'q', 16}, {'r', 17}, {'s', 18}, {'t', 19}, {'u', 20}, {'v', 21}, {'w', 22}, {'x', 23}, {'y', 24}}; int fun(char a[4]){ int l = strlen(a); int index = 0; switch (l){ case 1: index = -3; a[1] = a[2] = a[3] = 'a'; break; case 2: index = -2; a[2] = a[3] = 'a'; break; case 3: index = -1; a[3] = 'a'; break; default: index = 0; break; } index = index + dic[a[0]] + dic[a[0]]*25 + dic[a[1]]+1 + dic[a[0]]*625 + dic[a[1]]*25 + dic[a[2]]+1 + dic[a[0]]*625*25 + dic[a[1]]*625 + dic[a[2]]*25 + dic[a[3]]+1; return index; } int main(){ //auto mi = cbegin(dic); //cout << mi->first << " " << mi->second << endl; //for (auto mi : dic) //cout << mi.first << " " << mi.second << endl; char a[4]; cin >> a; //cout <<a << endl; cout << fun(a) << endl; return 0; }
相关文章推荐
- sigma平台编码出现[85460.960000] dmapool index 0 is not opened
- 腾讯2017秋招笔试编程题_编码
- 字符串编码(腾讯笔试)
- 从一道IBM的笔试题看编码规范
- Java语言编码规范 - Java语言编码规范(中文版)(http://doc.javanb.com/code-conventions-for-the-java-programming-language-zh/index.html)
- Python index 编写和编码格式
- 16、2005年11月金山笔试题。编码完成下面的处理函数。函数将字符串中的字符'*'移到串的前部分,前面的非'*'字符后移,但不能改变非'*'字符的先后顺序,函数返回串中字符'*'的数量。如原始串为:
- 笔试题——字符串编码
- a ~ y的25个字母,从1位到4位的编码,输出这个编码对应的Index.
- 百度2012校招笔试题之位数和编码
- 2014网易游戏TTT笔试部分题目(本人考后编码针对原题验证)
- TX2017秋招笔试题之geohash编码
- 华为的一道编码笔试题
- 2017网易游戏雷火盘古实习生招聘笔试:字符串编码
- 不舍编码:部分互联网公司笔试综合题及答案
- 稀疏自编码http://deeplearning.stanford.edu/wiki/index.php/Exercise:Sparse_Autoencoder#Results
- MCS(调制与编码策略)对应是Qm和TBS index,那么是由什么公司计算出来的?还是由TBS决定的?(MCS为0-31的表)
- 2017网易游戏雷火盘古实习生招聘笔试真题:字符串编码 [python]
- C/C++笔试系列--从一道IBM的笔试题看编码规范
- POJ 1496 Word Index (组合数学 求字符串对应编码)