剑指Offer:字符串排列【38】

题目描述

  输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。

题目分析

  

Java题解

package str;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator; public class StrPermutation { public static ArrayList<String> Permutation(String str) {
if(str==null)
return new ArrayList<>();
ArrayList<String> list = new ArrayList<>();
PermutationCore(str.toCharArray(),0,list);
ArrayList<String> newList = new ArrayList<>();//去除重复元素,比如aa这种,按我们的方式有aa,aa,但是实质结果只有一个aa
Iterator<String> it = list.iterator();
while (it.hasNext())
{
String temp = it.next();
if(!newList.contains(temp))
newList.add(temp);
}
Collections.sort(newList);//字典序排序
return newList;
} public static void main(String[] args) { ArrayList<String> list= Permutation("abc");
Iterator<String> it = list.iterator();
while (it.hasNext())
System.out.println(it.next());
} public static void PermutationCore(char[] str,int ptr,ArrayList<String> res) {
//递归的结束条件
if(ptr==str.length)
{
res.add(new String(str));
return;
}
//循环部分
for(int i = ptr;i<str.length;i++)
{
Swap(str,ptr,i);
PermutationCore(str,ptr+1,res);
Swap(str,ptr,i);
}
}   //交换
public static void Swap(char[] str,int i,int j)
{
char temp = str[i];
str[i] = str[j];
str[j] = temp;
} }

  

最新文章

  1. AVAudioPlayer播放并实现了后台播放和远程控制
  2. java lambda表达式学习笔记
  3. Nginx安装注意事项
  4. MYSQL 查询出最大/最小值所在的记录
  5. pyinstaller--将py文件转化成exe
  6. openssl安装
  7. Android Xfermode 实战 实现圆形、圆角图片
  8. CPU内存管理和linux内存分页机制
  9. jsoncpp第二篇------API
  10. HDU2008
  11. 自己动手写泛型dao
  12. Nginx的介绍以及编译安装详解
  13. spring mvc配置datasource数据源的三种方式
  14. RPC 原理
  15. 使用 Python 在 Linux 上实现一键回归测试
  16. 旺店通erp系统
  17. PAT天梯:L1-019. 谁先倒
  18. 国内一元钱 正常搭建android开发环境
  19. 共享内存shm*(生产者和消费者)
  20. HDU 4952 Poor Mitsui(贪心)

热门文章

  1. dedecms 调用栏目或文章所属上下级关系
  2. Qt编程简介与基本知识
  3. ElasticSearch和Hive做整合
  4. Centos7/RedHat7 下 python3使用cx-freeze打包matplotlib程序遇到的问题和解决办法
  5. CentOS SVN 服务器搭建
  6. mysql数据库解决中文乱码问题
  7. vue2.X 自定义 模态框 modal
  8. HDFS怎样检測并删除多余副本块
  9. css:颜色名和十六进制数值
  10. linux下编译ffmpeg 引入外部库x264