腾讯笔试题——五笔编码
来源:互联网 发布:金蝶软件财务报表 编辑:程序博客网 时间:2024/05/29 17:24
腾讯编程题——五笔编码
假定一种编码的编码范围是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.
问题描述:
问题即使找到输入编码对应的位置
先分析编码的第一位字母:比如 a { aa | aaa aaaa … aaay | aab aaba … aaby | … |aay aaya … aayy| } {ab | aba abaa … abab … abay | abb abba … abby | … |abyy}……. {ay | aya ayaa … ayay| … |ayy ayya … ayyy | } 共有 k*((25+1)*25+1)*25+1个编码
再分析编码的第二位字母:当第一位字母确定时,第二位编码 每换k个字母 如 ab–>ac 一共有 k*((25+1)*25+1)+1 将第一个一位码补上;
分析第三位子的字母: 当第二位的字母确定之后,第三位上,每换一个字母需经过:k*(25+1)+1 将第三位一开始前的两位码补上;
分析第四位:前三位确定好后,第四位即是该个编码在{a,b,c,…,y}中所对应的位置k+1,需要将开头的三位码补上
l = 'abcdefghijklmnopqrstuvwxy'l = list(l)## 第一位之前的个数函数def First(l,char): k = l.index(char) return k*((26*25+1)*25+1)## 第一位确定好后,第二位之前的个数函数def Second(l,char): k = l.index(char) return k*(26*25+1)+1## 第一第二位确定好后,第三位之前的个数函数def Third(l,char): k = l.index(char) return k*26+1## 第一,二,三位确定好后,第四位之前的个数函数def Four(l,char): k = l.index(char) return k+1s = input()s = list(s)## 由于index从0开始,无需加1if len(s)==1: index = First(l,s[0]) if len(s)==2: index = First(l,s[0])+Second(l,s[1])if len(s)==3: index = First(l,s[0])+Second(l,s[1])+Third(l,s[2])if len(s)==4: index = First(l,s[0])+Second(l,s[1])+Third(l,s[2])+Four(l,s[3])print(index)
baca16331
阅读全文
0 0
- 腾讯笔试题——五笔编码
- C++笔试题(五).腾讯
- 腾讯2017笔试题:编码
- tencent腾讯——笔试题2
- 字符串编码(腾讯笔试)
- 2016 腾讯笔试编程题_格雷编码
- 腾讯2017暑假实习笔试题-字符串编码
- 腾讯2017秋招笔试编程题--编码
- 腾讯2017秋招笔试编程题--geohash编码
- 腾讯2017秋招笔试编程题_编码
- 腾讯2017秋招笔试[编程题] geohash编码
- 腾讯2017秋招笔试编程题:编码 [python]
- 五笔字典序列编码(腾讯面试)
- 2014腾讯实习笔试题——优先队列
- 2014腾讯实习生笔试题——define与typedef
- 笔试题总结归纳之 腾讯——基础研究
- 腾讯模拟笔试题——回形数
- 算法整理——2015腾讯开发岗笔试题
- 欢迎使用CSDN-markdown编辑器
- JAVA中常用的数据结构
- Windows下kettle安装及建立与资源库连接
- 2017.9.11 数列 失败总结
- python数据分析之Numpy
- 腾讯笔试题——五笔编码
- 前端跨域时的post与get问题
- Ajax实现异步
- 第二周项目一C/C++语言中函数传递的三种方式之方法二传地址
- spring的@Transactional注解详细用法
- GFOJ686 序列操作(分段DP,未高精)
- 归并排序
- substring-with-concatenation-of-all-words
- 观察者模式