【剑指offer】字符串的排列
来源:互联网 发布:在淘宝上买药提交需求 编辑:程序博客网 时间:2024/06/05 20:06
题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
思路
把这个问题分解为两步,第一步,先把第一个字固定,求字符串中剩下的字符的全排列。剩下字符的全排列也可以通过先把剩下的字符分为第一个字符和后面字符的全排列,因此很容易想到用递归。
代码
import java.util.*;public class Solution{ public ArrayList Permutation(String str) { ArrayList res = new ArrayList(); if (str != null && str.length() > 0) { PermutationHelper(str.toCharArray(), 0, res); Collections.sort(res); } return res; } public void PermutationHelper(char[] cs, int i, ArrayList list) { if(i == cs.length - 1) { String val = String.valueOf(cs); if (!list.contains(val)) list.add(val); } else { for(int j = i; j < cs.length; ++j) { swap(cs, i, j);//交换两个字符// PermutationHelper(cs, i + 1, list);//对后面的字符全排列// swap(cs, i, j);//把交换后的字符串复原// } } } public void swap(char[] cs, int i, int j){ char temp = cs[j]; cs[j] = cs[i]; cs[i] = temp; }}
阅读全文
0 0
- 【剑指offer】字符串的排列
- 剑指offer--字符串的排列
- 《剑指offer》字符串的排列
- 【剑指Offer】字符串的排列
- 剑指offer--字符串的排列
- 剑指offer:字符串的排列
- 剑指offer:字符串的排列
- 剑指offer:字符串的排列
- [剑指offer]字符串的排列
- 《剑指offer》-字符串的排列
- 剑指offer|字符串的排列
- 【剑指offer】字符串的排列
- 《剑指offer》字符串的排列
- 剑指Offer:字符串的排列
- 【剑指offer】字符串的排列
- 剑指offer-字符串的排列
- 剑指offer 字符串的排列
- 剑指offer 字符串的排列
- maven模块依赖插件(转载)
- dd命令使用详解
- 40个Java集合面试问题和答案
- 关于验证码存储机制的转变
- ubantu安装nginx、mysql、php
- 【剑指offer】字符串的排列
- JS函数 -- 功能,语法,返回值,匿名函数,自调用匿名函数,全局变量与局部变量,arguments的使用
- GetSystemInfo详解
- 情感分析利器——Doc2vec
- JavaScript:prototype属性使用方法
- weblogic10.3 启动报错 Unrecognized option: -jrockit Error: Could not create the Java Virtual Machine
- Ethernet/IP 学习笔记五
- C#与excel互操作 C#与excel互操作的错误无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 对象强制 如果您使用的电脑
- 用npm安装vue和vue-cli,并使用webpack创建项目