剑指offer系列—T28字符串的排列
来源:互联网 发布:热血江湖登录器源码 编辑:程序博客网 时间:2024/05/22 01:47
本人对java语言更熟悉,所以剑指offer代码都是通过Java实现,且涉及的核心代码全部通过牛客网的测试用例检查,感谢牛客网为我检验程序提供了极大帮助!main函数是为了在自己运行程序时,运行结果更直观化。
import java.util.ArrayList;/** * @author xhl * 字符串的排列 * 题目描述 * 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc, * 则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结 * 果请按字母顺序输出。 输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。思路:考察全排列,在博客《剑指offer系列-T12_1全排列》已经描述,不过此题需要考虑有重复元素的情况。 * */public class offerT28 {/** * @param args */ArrayList<String> list = new ArrayList<String>();public void Permutation1(char[] chararray, int index) {if (index == chararray.length - 1) {list.add(String.valueOf(chararray));} else {for (int i = index; i < chararray.length; i++) {if (i != index && chararray[index] == chararray[i])//判断是否有相等的元素,相等则不用再交换顺序,因为效果和不交换一样continue;else {swap(chararray, i, index);Permutation1(chararray, index + 1);swap(chararray, i, index);}}}}public ArrayList<String> Permutation(String str) {Permutation1(str.toCharArray(), 0);return list;}void swap(char[] a, int i, int j) {char temp;temp = a[i];a[i] = a[j];a[j] = temp;}public static void main(String[] args) {// TODO Auto-generated method stubofferT28 o = new offerT28();String str = "abc";ArrayList<String> list = o.Permutation(str);System.out.print(list);}}
0 0
- 剑指offer系列—T28字符串的排列
- 剑指offer系列源码-字符串的排列
- 剑指offer系列之26:字符串的排列
- 剑指Offer系列-面试题28:字符串的排列
- 【剑指offer-解题系列(27)】字符串的排列
- 《剑指offer》——字符串的排列
- 剑指offer——字符串的排列
- 剑指offer——字符串的排列
- 剑指offer——字符串的排列
- 剑指offer—字符串的排列
- 剑指offer(27)—字符串的排列
- 【剑指offer系列】 字符串排列___28
- 【剑指offer】字符串的排列
- 剑指offer--字符串的排列
- 《剑指offer》字符串的排列
- 【剑指Offer】字符串的排列
- 剑指offer--字符串的排列
- 剑指offer:字符串的排列
- 移动端click事件延迟300ms正解大全
- android学习路线:如何成长为高级工程师
- 羊驼
- [poj 3461]Oulipo[kmp]
- dp和px间的转换及屏幕宽高的获取
- 剑指offer系列—T28字符串的排列
- 关联规则之Apriori
- 银行管理系统
- 物质之学(二)
- 一个程序员的Ubuntu安装的那些软件
- 编程实现打印出26个字母的所有子集
- 文章标题
- poj1185 炮兵阵地(状压dp)
- Spiral Matrix 螺旋数组