2017腾讯秋招笔试题之编码

author author     2022-10-23     422

关键词:

Description:

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

Input:

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

Output:

   输出这个编码的index

Example: 

   Input: bcac     Output: 16331


   看到题目第一时间其实是没有看懂的,没看出来题目中提到的编码有什么规律。仔细分析一下,按照题目要求:

Index(a) = 0; Index(aa) = 1; Index(aaa) = 2; Index(aaaa) = 3; Index(aaab) = 4 ...

既然已经知道初始值,那我们可以利用这些已有的Index去推算相邻的字符编码,从低位到高位:

Index(aaaa)到 Index(aaab) :base4 = 1;

Index(aaa) 到 Index(aab)  :base3 = 25*base4 + 1;

Index(aa)  到 Index(ab)   : base2 = 25*base3 + 1;

Index(a)   到 Index(b)    :base1 = 25*base2 + 1;

    知道a到b之间的推算,就很容易计算a到c,d...只需要乘以间隔就行。然后只需要按位计算每个位上的编码,最后将整个字符串的编码相加就可以了。

例如输入: bcac

第一位b: coding1 = ('b'- 'a')*base1 + 1;

第二位c: coding2 = ('c'- 'a')*base2 + 1;

第三位a: coding3 = ('a'- 'a')*base3 + 1;

第四位c: coding4 = ('c'- 'a')*base4 + 1;

最终的编码为 coding = coding1+coding2+conding3+conding4-1;(减1是因为编码是从0开始的)


源代码(不是最优化的,只是个思路)

public class code 
    public static void main(String args[])
        int base4 = 1;
        int base3 = 25*base4 + 1;
        int base2 = 25*base3 + 1;
        int base1 = 25*base2 + 1;
        int[] indexbox = new int[]base1,base2,base3,base4;
        String inpt ; //input
        int oupt = 0; //output
        Scanner sc = new Scanner(System.in);
        inpt = sc.next();
        sc.close();
        char[] inpt_character = inpt.toCharArray(); //将输入的字符串转化成数组
        for(int i=0;i < inpt_character.length;i++)
            oupt += (int)(inpt_character[i] - 'a')*indexbox[i%4] + 1;
        
        
        System.out.println(oupt-1);    
    
















tx2017秋招笔试题之编码

问题描述:假定一种编码的编码范围是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... 查看详情

tx2017秋招笔试题之geohash编码

问题描述:geohash编码:geohash常用于将二维的经纬度转换为字符串,分为两步:第一步是经纬度的二进制编码,第二步是base32转码。此题考察纬度的二进制编码:算法对纬度[-90,90]通过二分法进行无限逼近(取决于所需精度,本... 查看详情

tx2017秋招笔试题之素数对

问题描述:给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输入值小于1000。如,输入为10,程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))输入描述:输入包括一个整数n,(3... 查看详情

网易2017秋招笔试题3:最长公共子括号序列长度

【问题来源】网传的2017网易秋招笔试题【问题描述】 【算法思路】 下面的解题思路摘自 http://www.cnblogs.com/Atanisi/p/7500186.html刚看到题我就想到暴力解,深搜出所有合法的括号序列,再依次比较公共子序列的长度,返... 查看详情

美团2017秋招笔试题拼凑钱币

给你六种面额1、5、10、20、50、100元的纸币,假设每种币值的数量都足够多,编写程序求组成N元(N为0~10000的非负整数)的不同组合的个数。 输入描述:输入包括一个整数n(1≤n≤10000)输出描述:输出一个整数,表示不同的组合方... 查看详情

滴滴秋招笔试题(2016-09-18)

 1.地下迷宫这道题是网上找到别人的答案,拿过来学习学习,望勿怪。   importjava.io.BufferedInputStream;importjava.util.Scanner;publicclass地下迷宫{publicstaticint[][]dir={{1,0,0},{0,1,1},{-1,0,3},{0,-1,1}};publicstati 查看详情

京东笔试——秋招笔试题(代码片段)

#include<iostream>#include<cstdio>#include<algorithm>#include<set>usingnamespacestd;/*题解: a^b=c^d, 底数相等的情况: 1)底数为1,即1^b=1^d的情况:n*n 2)底数不为1,即a^b=a^b的情况:(n-1)*n 底数不相等的情况: 拆成(i 查看详情

阿里巴巴2021秋招笔试题20210806(代码片段)

源代码:https://gitee.com/shentuzhigang/mini-project/tree/master/exam-alibaba/exam-alibaba-20210806第一题题目描述大概定义了一年mmm个月,一个月ddd天,一周www天已知mmm,ddd,www求第kkk年,第jjj月 查看详情

序列和-------一道大厂秋招笔试题(代码片段)

题目:给出一个正整数N和长度L,找出一段长度大于等于L的连续非负整数,他们的和恰好为N。答案可能有多个,我我们需要找出长度最小的那个。例如N=18L=2:5+6+7=183+4+5+6=18都是满足要求的,但是我们输出更短的567综合网上给出... 查看详情

阿里巴巴2021秋招笔试题20211119(代码片段)

源代码:https://gitee.com/shentuzhigang/algorithm/tree/master/exam-alibaba/exam-alibaba-20211119第一题题目大意:有长度为n的数组a有k次机会在连续长度不超过m的区间每个元素+1使得数组全部元素变成偶数importjava.util.LinkedList;importjava.util... 查看详情

微软2017校招笔试题2composition

题目AlicewritesanEnglishcompositionwithalengthofNcharacters.However,herteacherrequiresthatMillegalpairsofcharacterscannotbeadjacent,andif‘ab‘cannotbeadjacent,‘ba‘cannotbeadjacenteither.Inordertomeetther 查看详情

微软2017校招笔试题3registrationday

题目It‘sHUniversity‘sRegistrationDayfornewstudents.ThereareMofficesinHUniversity,numberedfrom1toM.Studentsneedtovisitsomeoftheminacertainordertofinishtheirregistrationprocedures.Theofficesareindifferent 查看详情

小米2017校招笔试题

只过了20%...我日树的高度 时间限制:C/C++语言1000MS;其他语言3000MS 内存限制:C/C++语言65536KB;其他语言589824KB 题目描述: 现在有一棵合法的二叉树,树的节点都是用数字表示, 现在给定这棵树上所有的父子关系,求这棵树的高... 查看详情

2017华为优招笔试题

 哎,没有接到笔试通知,不知道为啥就错过了。之后见到题目,前两道编程题。其实都见过类似的题目,有点思路,但是直接快速完整实现出来,水平还是达不到。这样的题目,也不算难,三道编程题至少AC两道才算可以。... 查看详情

lgyx2017校招笔试题

前言今天通知过了笔试,但总感觉有些笔试没来得及做的题不解决不舒服斯基。题目 大意就是,给你个形如a,b,c,ab,bb,cb,ac,bc,cc,aab,bab,cab,abb,bbb,cbb,acb,bcb,ccb......按某种规律排列的无限长的字符串数组,要求:1)给定一个位置,... 查看详情

腾讯2018年9月秋招前端笔试题--编程题

varreadline=require(‘readline‘);constrl=readline.createInterface({input:process.stdin,output:process.stdout});constlines=[];rl.on(‘line‘,function(line){lines.push(line);constarr=lines.map((item)=>{ 查看详情

网易2017年校招笔试题最大的奇约数

题目:定义函数f(x)为x的最大奇数约数,x为正整数,例如f(44)=11.现在给出一个N,需要求出f(1)+f(2)+f(3)+...+f(N)例如:N=7f(1)+f(2)+f(3)+f(4)+f(5)+f(6)+f(7)=1+1+3+1+5+7=21. 分析:奇数的最大约数是自身,偶数的最大约数是是除去所有偶因子之... 查看详情

2017年腾讯秋招软件开发笔试编程题回忆版

2017年腾讯秋招软件开发笔试编程题回忆版(所有题目大致描述如下,并非完整的题目回忆,但意思大致一样)1、又一个魔法城市,城市里面有n个魔法城堡,序号为0,1,2。。。n-1;魔法城堡之间都有路径相连;魔法城堡两两之... 查看详情