博主将会针对Java面试题写一组文章,包括J2ee,SQL,主流Web框架,中间件等面试过程中面试、笔试中经常问的问题,欢迎大家关注。一起学习,一起成长。
![2be962468b4b870a297ebbf81dd21b6d.png](https://img-blog.csdnimg.cn/img_convert/2be962468b4b870a297ebbf81dd21b6d.png)
该题目为笔者面试时真实的笔试题。
题目如下:
李雷和韩梅梅坐前后排,上课想说话怕被老师发现,所以改为传小纸条。为了不被老师发现他们纸条上说的是啥,于是他们约定了如下方法传递信息:
将26个英文字母(全为大写),外加空格,一共27个字符分成3组,每组9个。
也就是ABCDEFGHI是第一组,JKLMNOPQR是第二组,STUVWXYZ*是第三组(此处用*代表空格)。
然后根据传递纸条那天的日期,改变字母的位置。
先根据月份数m,以整个分组为单位进行循环左移,移动(m-1)次。
然后根据日期数d,对每个分组内的字符进行循环左移,移动(d-1)次。
以3月8日为例,首先移动分组,3月需要循环左移2次,变成:
STUVWXYZ*,ABCDEFGHI,JKLMNOPQR
然后每组内的字符,8日的话需要循环左移7次,最终的编码为:
Z*STUVWXY,HIABCDEFG,QRJKLMNOP
对于要传递信息中的每个字符,用组号和组内序号两个数字来表示。
如果在3月8日传递信息“HAPPY”,那么H位于第2组的第1个,A位于第2组第3个,P位于第3组第9个,
Y位于第1组第9个,所以纸条上会写成:
21 23 39 39 19
现在给定日期和需要传递的信息,请输出应该写在纸条上的编码。
输入规范:
每个输入包含两行。第一行是数字是月份,第一行是数字是日子。输入保证是一个合法的日期。
第三行为需要编码的信息字符串,仅由A~Z和空格组成,长度不超过1024个字符。
输出规范:
对每个输入,打印对应的编码,数字之间用空格分隔,每个输出占一行。
输入示例1:
1
1
HI
输出示例1:
18 19
输入示例2:
3
8
HAPPY
输出示例2:
21 23 39 39 19
![01e10c789035ff0e295b3e938288ab10.png](https://img-blog.csdnimg.cn/img_convert/01e10c789035ff0e295b3e938288ab10.png)
思考和探索:
这道题目和上一题一样非常有趣,这道题难度适中,答题时间建议为60mins。
思路先对月根据确定份顺序,在根据日期确定字母顺序,然后遍历字母获取位置。
解答示例
![611982e04c05f9db67c57aa5a042fe54.png](https://img-blog.csdnimg.cn/img_convert/611982e04c05f9db67c57aa5a042fe54.png)
![52fdb96c5b97889e2b282eeb613c704d.png](https://img-blog.csdnimg.cn/img_convert/52fdb96c5b97889e2b282eeb613c704d.png)
![35720b0787bb467a1459bf050b0835dd.png](https://img-blog.csdnimg.cn/img_convert/35720b0787bb467a1459bf050b0835dd.png)
-------------
写的不好,如果大家有更高的见解欢迎评论。