算法题:解密(楚楚街2016招聘笔试)
名气笔试:楚楚街2016招聘笔试(解密)
题目描述
亮亮深吸一口气,小心地将盒子打开,里面是一张地图,地图上除了一些奇怪的字母以外没有任何路线信息,这可让亮亮犯了愁,这些字母代表了什么意思呢? 亮亮绞尽脑汁也想不出什么思路,突然,亮亮眼前一亮,“我可以把这些字母所有的排列方式全部写出来,一定可以找到答案!”于是,亮亮兴奋的开始寻找字母里的秘密。
输入描述:
每组数据输入只有一行,是一个由不同的大写字母组成的字符串,已知字符串的长度在1到9之间,我们假设对于大写字母有’A’ < ‘B’ < … < ‘Y’ < ‘Z’。
输出描述:
输出这个字符串的所有排列方式,每行一个排列,要求字母序比较小的排列在前面。
输入例子:
WHL
输出例子:
HLW
HWL
LHW
LWH
WHL
WLH
java版本的代码实现:
package cn.cat.algorithm;import java.util.TreeSet;public class Decode {/*** 分析:此题需要借助递归的方式最简便,需要注意全排序时,字母顺序更改后,需要还原字母顺序,以便于下一轮的排序使用。* 题目还要求使用按字母序输出,故需要将全排序结果全部存放到集合中,然后再统一排序输出,此处可以直接借助JDK的TreeSet来快速实现。* * @Description: * @author gwj* @Created 2018年4月18日 下午4:42:04 * @param args*/public static void main(String[] args) {String str = "WHL";char[] charArr = str.toCharArray();//因为需要按字母序输出,故先将结果存储到集合中。TreeSet<String> treeSet = new TreeSet<String>();//全排序permutation(charArr, 0, treeSet);//ThreeSet本身就是按字典顺序排序的,直接输出即可。for (String s : treeSet) {System.out.println(s);}}/** 排列字符* @Description: * @author gwj* @Created 2018年4月19日 上午9:53:08 * @param cs 字符数组* @param index 排序的起始索引* @param set 存放排序结果的集合*/static void permutation(char[] cs, int index, TreeSet<String> set) {if (index >= cs.length) {set.add(new String(cs));return;}for (int i = index; i < cs.length; i++) {swap(cs, index, i);//递归调用permutation(cs, index + 1, set);//恢复交换的字母swap(cs, index, i); }}/** 交换数组元素位置* @Description: * @author gwj* @Created 2018年4月18日 下午5:25:31 * @param charArr* @param x* @param y*/static void swap(char[] charArr, int x, int y) {char temp = charArr[x];charArr[x] = charArr[y];charArr[y] = temp;}}
算法题:解密(楚楚街2016招聘笔试)相关推荐
- 算法题:旅途(楚楚街2016招聘笔试)
名企笔试:楚楚街2016招聘笔试(旅途) 题目描述 原来是要到醋溜站台乘坐醋溜快车到醋溜港",亮亮解出了地图隐藏的秘密,赶紧奔向醋溜站台,但到了之后,亮亮忧桑地发现,从醋溜站台到醋溜港沿途的 ...
- 楚楚街2016招聘笔试(航线)
楚楚街2016招聘笔试(航线) 题目描述 "呼!!终于到了,可是接下来要怎么走才能到达楚楚街港港呢?"亮亮在醋溜港直发愁. 突然"啾"的一下,一只银色小船出现在 ...
- 楚楚街2016招聘笔试(旅途)(未完待续)
题目描述 原来是要到醋溜站台乘坐醋溜快车到"醋溜港",亮亮解出了地图隐藏的秘密,赶紧奔向醋溜站台 但到了之后,亮亮忧桑地发现,从醋溜站台到醋溜港沿途的每个车站都有很多美女被他飒爽的 ...
- 名企笔试:腾讯2016招聘笔试(微信红包)
名企笔试:腾讯2016招聘笔试(微信红包) 题目描述 春节期间小明使用微信收到很多个红包,非常开心.在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半.请帮小明找到该红包金额.写出具 ...
- 名企笔试:美团2016招聘笔试(股票交易日)
美团2016招聘笔试(股票交易日) 题目描述 在股市的交易日中,假设最多可进行两次买卖(即买和卖的次数均小于等于2),规则是必须一笔成交后进行另一笔(即买-卖-买-卖的顺序进行).给出一天中的股票变化 ...
- 蘑菇街2016招聘笔试
题目描述 给定一个字符串,问是否能通过添加一个字母将其变为回文串. 输入描述: 一行一个由小写字母构成的字符串,字符串长度小于等于10. 输出描述: 输出答案(YES\NO). 输入例子: coco ...
- 网易2016招聘笔试升级之路Java代码
本文地址:http://blog.csdn.net/shanglianlm/article/details/72968583 小易经常沉迷于网络游戏.有一次,他在玩一个打怪升级的游戏,他的角色的初始能 ...
- 美团2016招聘笔试:奇数位丢弃
对于一个由0-n的所有数按升序组成的序列,我们要进行一些筛选,每次我们取当前所有数字中从小到大的第奇数位个的数,并将其丢弃.重复这一过程直到最后剩下一个数.请求出最后剩下的数字. 输入描述: 每组数据 ...
- 楚楚街2016校招 ——礼物(动态规划)
题目描述 "呼!!佳慧,我拿到面试直通卡了!""吓死宝宝了!哦,你拿到直通卡了啊,好哒,进去吧,你可以直接接受老大的面试了". 亮亮来到老大的办公室," ...
最新文章
- 业界对生成图片缩略图的做法归纳
- JUC多线程:阻塞队列ArrayBlockingQueue与LinkedBlockingQueue
- 不显示坐标刻度_如何使用坐标交叉位置来改变Excel图表的展现形态
- [emacs] python代码折叠
- SAP UI5应用里的页面路由处理
- 基于ISM的大数据在建筑领域中的应用障碍分析
- CVPR 2019 爆款论文作者现场解读:视觉语言导航、运动视频深度预测、6D姿态估计...
- 【MySQL】ERROR 1055 (42000) ROUP BY clause this is incompatible with sql_mode=only_full_group_by
- 201612-2工资计算
- 创金合信基金公司:专户模式案例
- 电工学的MATLAB实践,基于Matlab/Simulink的电工学电路仿真
- java最长公共子串_查找字符串最长公共子串
- JDK1.8和JRE文件结构
- 贯头山酒——中华酒文化的源头之一
- 我不恨你,我只恨我们有缘无分
- 调用Runtime.getRuntime().exec()执行Linux脚本导致程序挂住的问题分析
- Elasticsearch如何提升查询效率
- 1. verilog 基础语法
- msp430发送pwm信号_使用MSP430G2单片机的PWM模块控制LED指示灯的亮度
- 梳理|对话系统中的DST