项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
欢迎大家star,留言,一起学习进步

经常会遇到字符串全排列的问题。例如:输入为{‘a’,‘b’,‘c’},则其全排列组合为abc,acb,bac,bca,cba,cab。对于输入长度为n的字符串数组,全排列组合为n!种。

思路:从字符串数组中每次选取一个元素,作为结果中的第一个元素。然后,对剩余的元素全排列,步骤跟上面一样。很明显这是个递归处理的过程,一直到最后即可。

按照惯例,talk is cheap,show me the code:

package leilei.bit.edu.tree;public class RecursionTree {public static void permutation(char[] s,int from,int to) {if(to <= 1)return;if(from == to) {System.out.println(s);} else {for(int i=from; i<=to; i++) {swap(s,i,from); //交换前缀,使其产生下一个前缀permutation(s, from+1, to);swap(s,from,i); //将前缀换回,继续做上一个前缀的排列}}}public static void swap(char[] s,int i,int j) {char tmp = s[i];s[i] = s[j];s[j] = tmp;}public static void main(String[] args) {char[] s = {'a','b','c'};permutation(s, 0, 2);}}

代码运行结果

abc
acb
bac
bca
cba
cab

字符串全排列 java实现相关推荐

  1. 《LeetCode力扣练习》第46题 全排列 Java

    <LeetCode力扣练习>第46题 全排列 Java 一.资源 题目: 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 .你可以 按任意顺序 返回答案. 示例 1: 输 ...

  2. java中将json字符串_Java中JSON字符串与java对象的互换实例详解

    在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好, ...

  3. java考察代码_一段简单的关于字符串的 Java 代码竟考察了这么多东西

    下面的代码运行结果是什么?解释一下为什么会有这些差异. String s1 = "hello"; String s2 = s1 + ",world"; Stri ...

  4. Java中JSON字符串与java对象的互换实例详解

    这篇文章主要介绍了在java中,JSON字符串与java对象的相互转换实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JS ...

  5. Json对象与Json字符串的转化、JSON字符串与Java对象的转换

    一.Json对象与Json字符串的转化 1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符 ...

  6. json字符串与java对象的相互转换(jackson)

    1.java对象转换为json字符串 package com.chichung.json;import com.fasterxml.jackson.core.JsonProcessingExcepti ...

  7. json java typeof_Json对象与Json字符串的转化、JSON字符串与Java对象的转换

    一.Json对象与Json字符串的转化 1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符 ...

  8. 一个从源代码里提取中文字符串的java类

    2019独角兽企业重金招聘Python工程师标准>>> 工作中需要优化代码里的中文警示语和异常信息,实在比较多,所以就写了个程序专门从代码里提取中文字符串. java做的,比较简单, ...

  9. 求字符串全排列的递归算法

    求字符串全排列的递归算法 void permutation(char * p_str, char * p_begin) { if(!p_str || !p_begin) { return; } if( ...

  10. java检查两个字符串是否包含,java判断一个字符串是否包含另外一个字符串,java另外一个,要检查一个字符串是否包含...

    java判断一个字符串是否包含另外一个字符串,java另外一个,要检查一个字符串是否包含 要检查一个字符串是否包含另外一个字符串需要使用indexOf()方法,如果indexOf方法返回大于等于0的值 ...

最新文章

  1. 遇到mysql数据表不存在的问题
  2. exec和source命令的区别
  3. 易语言mysql锁表_MySQL的3种锁定机制
  4. 从C# String类理解Unicode(UTF8/UTF16)
  5. ExtJs radiogroup form.loadRecord方法无法赋值正确解决办法
  6. Latex常用特殊符号
  7. A Brief Overview Of Vulkan API
  8. 链表的相关面试题(完整)(C语言)
  9. ADB工具使用教程(新手总结笔记)
  10. spring html导出excel文件,springboot2.1.8使用poi导出数据生成excel(.xlsx)文件
  11. ipod nano7安装linux,怎么用ipod nano看视频?
  12. 记python opencv的一次恶搞
  13. 解决安装tensorflow-gpu:ImportError: DLL load failed:找不到指定的模块。从根源解决问题
  14. 我的、新的、纯粹的:触摸荣耀长大后的面庞
  15. Java给特定用户发通知_微信公众平台向特定用户推送消息
  16. 系统光驱盘符不见的解决方法
  17. JQuery插件之-----Datatables(三)Datatables实现多选框与AJAX返回数据
  18. 电脑耳机拔出后,再插入没声音
  19. ROC曲线和PR曲线
  20. numpy数组保存至txt时一系列问题及其解决方案

热门文章

  1. moell/mojito - 基于 Laravel、Vue、ELement 构建的基础后台系统扩展
  2. Ubuntu 16.04安装SoapUI工具进行接口测试(Web Service/WSDL/RESTfull)
  3. 《C++游戏编程入门(第4版)》——1.2 编写第一个C++程序
  4. 数据库性能指标 2005-04-06 19:36:14(转载)
  5. HTML 学习笔记一
  6. 一份招聘需求的分析 (转载)
  7. C# 泛型2---排序
  8. 什么样的对象会被直接放入老年代
  9. Spring注解——同一接口有多个实现类,如何注入
  10. Invalid ADAPTORNAME specified. Type 'imaqhwinfo' for a list of available ADAPTORNAMEs. Image acquis