Tencent2017秋招笔试题--求编码的index
来源:互联网 发布:网络软文推广公司 编辑:程序博客网 时间:2024/04/30 05:16
题目:假定一种编码的编码范围是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++代码:
#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;}
阅读全文
0 0
- Tencent2017秋招笔试题--求编码的index
- 腾讯2017秋招笔试编程题--编码
- 腾讯2017秋招笔试编程题--geohash编码
- 腾讯2017秋招笔试编程题_编码
- TX2017秋招笔试题之geohash编码
- TX2017秋招笔试题之geohash编码
- 腾讯2017秋招笔试[编程题] geohash编码
- 腾讯2017秋招笔试编程题:编码 [python]
- 2017滴滴秋招笔试编程题-求连续子数组的最大和
- 2017年腾讯校招笔试编程题:求质数之间的距离
- 腾讯2017秋招笔试编程题(四)----geohash编码
- 腾讯2017秋招笔试编码C++实现
- 百度2012校招笔试题之位数和编码
- 2018阿里巴巴秋招笔试编程题的自我探索
- 2015阿里巴巴秋招在线笔试题
- 腾讯2016秋招笔试编程题
- 阿里巴巴2014秋招笔试题
- 滴滴2017秋招笔试题-1001
- Java开发中的23种设计模式详解
- 欢迎使用CSDN-markdown编辑器
- HashMap和Hashtable的区别
- Android 开源App:发呆便签/SuperNote
- C++读取写入.txt文件(ifstream/ofstream)—读取指定行,修改指定行,复制文件,清除文件,统计文件行数
- Tencent2017秋招笔试题--求编码的index
- c++32/64位编译器简单获取cpuid低32位代码
- cron定时器_爬虫_获取每日星座运势
- Apache Tephra -使用
- 类的成员变量通过Field.set方法提示java.lang.NullPointerException
- IP转数字,数字转IP
- Meteor Shower POJ
- RobotFrameWork之For循环应用
- Mac下TensorFlow的部署和安装