牛客网刷题之字符串的排列
来源:互联网 发布:乐视投屏 for mac 编辑:程序博客网 时间:2024/05/21 04:24
题目描述:
解题思路:
先固定一个字符,然后依次将后面的字符进行交换,当交换的字符到达字符串末尾就完成一次循环,接着就是下一个字符……如下图:
显然,我们可以使用递归的方法:
题解:
public ArrayList<String> Permutation(String str) { ArrayList<String> res = new ArrayList<>(); if (str == null) { return null; } PermutationHlper(str.toCharArray(), 0, res); Collections.sort(res); return res; } private void PermutationHlper(char[] charArray, int i, ArrayList<String> list) { if (i == charArray.length - 1) { list.add(String.valueOf(charArray)); } else { for (int j = i; j < charArray.length; j++) { if (i == j || charArray[i] != charArray[j]) { swap(charArray, i, j); PermutationHlper(charArray, i + 1, list); swap(charArray, i, j);// 复位 } } } } private void swap(char[] cs, int i, int j) { char temp = cs[i]; cs[i] = cs[j]; cs[j] = temp; }
ac结果:
0 0
- 牛客网刷题之字符串的排列
- 数据结构之-字符串的全排列
- 笔试面试之字符串的全排列
- 剑指Offer之 - 字符串的排列
- 【剑指offer】之字符串的排列
- 剑指offer(六十一)之字符串的排列
- 字符串的全排列
- 字符串的全排列
- 转载 字符串的排列
- 字符串的排列--总结
- 字符串的排列
- 字符串的全排列
- 字符串的排列
- 53.字符串的排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- Android studio打包应用程序出现 '注: 某些输入文件使用或覆盖了已过时的 API'
- Android 使用9Patch图片做背景
- PS(PhotoShop)替换纯色图片的颜色
- centos7源码装apache,mysql,php及各种问题的解决办法
- poj 3622 Gourmet Grazers STL之multiset
- 牛客网刷题之字符串的排列
- 请列举出你所知道的所有通讯协议,并阐述他们的应用场合?
- Merge Sorted Array | LeetCode
- 设计模式之观察者模式
- (八)Servlet就是这样-JDBC及相关
- Android缓存框架 DiskLruCache
- BZOJ4386[POI2015] Wycieczki
- linux-2.6.29 linux设备驱动归纳总结 目录
- 大数据以及Hadoop相关概念介绍