字符串全排列 java实现

2023-11-04

项目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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

字符串全排列 java实现 的相关文章

  • 刷脸支付在新零售行业线上线下加速融合

    以线上线下融合为特点的新零售一定是未来的趋势 而时至今日 马云的新零售概念俨然是当下资本市场最热门的风口 无论是电商大鳄 还是传统商超 创业公司 都在抢先布局这块市场 新零售的概念即企业以互联网为依托 通过运用大数据 人工智能等先进技术手段
  • EduCoder_web实训作业--JavaScript 学习手册二:JS 数据类型

    欢迎大家关注 转发 加推荐给身边的同学啊 第一关 请在此处编写代码 Begin aType typeof a bType array cType typeof c dType typeof d eType bool fType typeof
  • kubernetes-1.25.6 二进制部署

    目录 1 基础环境 2 基础环境配置 2 1 所有节点配置hosts 2 2 关闭防火墙 selinux dnsmasq swap 2 3 配置时间同步 2 4 节点修改资源限制 2 5 安装基本软件 2 6 升级系统内核 2 7 修改内核
  • 半监督目标检测

    一 Soft Teacher 1 超实用半监督目标检测 Soft Teacher 及 MMDetection 最强代码实践 2 3 GitHub上mmdetection上有一个关于SSOD这个的教程 SSOD tutorial 4 配置mm
  • unity 保存场景数据,读取场景

    原文链接 http www cnblogs com qq2351194611 p 11310159 html 一共两个脚本 一个保存的 一个读取的 下面会附上代码 网上都有 这个只是方便自己用 这是保存的脚本 放到Editor文件夹下即可

随机推荐

  • 数据清洗:由坐标数据构成的轨迹去除漂移点的操作

    版权声明 转载请注明作者 独孤尚良dugushangliang 出处 https blog csdn net dugushangliang article details 102821219 先看看我们要处理的数据 首先根据点的经纬度数值
  • uos的linux内核版本,在UOS 20或Deepin系统中安装Linux 5.5.0版本内核

    本文介绍的安装Linux 5 5版本内核方法可用在UOS 20或Deepin系统中 内核类型为generic 适用于x86 64架构计算机 Linux 5 5更新详情 Linux 5 5内核发布下载 附新功能及新特性介绍 下载Linux 5
  • 谷歌携Blink来势汹汹 WebKit将成明日黄花?

    原文地址 http www csdn net article 2013 04 09 2814815 Google近日宣布将为Chrome浏览器开发新的自主渲染引擎Blink 与WebKit分道扬镳 随后Opera宣称将追随Google 放弃
  • 主流数据库之间对SQL:2003标准的不同实现方法比较(第四部分 查询结果集中间n行数据)

    本文严禁在未征得本人同意的情况下以任何形式进行转载 本人只接受在邮件中的转载申请 如需转载 请发送邮件至 betteryou 126 com 带有偏移量的限制 目标 仅需要结果集中的n行数据 并试图忽略前面m行的数据 通常只在有ORDER
  • 程序员看世界杯

    目录 1 世界杯赛事规则 1 1 赛制 1 2 小组赛 1 3 淘汰赛阶段 1 4 1 8决赛 1 5 半决赛 1 6 决赛 2 大力神杯材质 3 看球心德 4 2022大力神杯赢家 1 世界杯赛事规则 1 1 赛制 世界杯一共进行64场
  • pytorch基本使用_01

    import torch import numpy as np string 在torch中对string不支持 1 可以通过向量one hot来进行分类 2 embedding word2vec glove type check a to
  • 利用nodemcu和mqtt协议让嵌入式设备接入互联网(二.nodejs的安装和配置)

    文章目录 前言 nodejs nvm和nodejs的安装 npm的相关配置 配置npm的global和cache路径 配置npm仓库为国内淘宝镜像 npm下载相关依赖包 npm初始化项目 安装相关依赖包 前言 第一篇讲了怎么用layui做H
  • 在Sonar中配置license和copyright的检查

    现在开源代码越来越多 代码头部的license和copyright信息在开发中容易被遗忘 那么就有必要做一些相关的检查 例如在持续集成CI中加入这方面的检查 当然 目前有很多集成在IDE中的工具来自动添加license和copyright信
  • 区间查询(树状数组之差点问线问题)

    1110 区间查询 时间限制 2 Sec 内存限制 32 MB 提交 162 解决 62 提交 状态 题目描述 食堂有N个打饭窗口 现在正到了午饭时间 每个窗口都排了很多的学生 而且每个窗口排队的人数在不断的变化 现在问你第i个窗口到第j个
  • selenium自动化测试入门 浏览器多窗口切换

    有时web应用会打开多个浏览器窗口 当我们要定位新窗口中的元素时 我们需要将webDriver的handle 句柄 指定到新窗口 什么意思 假设我们打开web应用 在系统运行过程中重新打开一个新窗口 可以是页签 当前浏览器存在两个窗口 这时
  • 宋浩概率论笔记(四)数字特征

    本帖更新数字特征 包含期望 方差 相关系数等 要点在于记忆性质中的各种公式 遇到题目时能迅速利用已知条件计算答案
  • (超详细)单臂路由及操作步骤

    目录 一 前提引入 二 单臂路由概述 2 1概念 2 2单臂路由优点 2 3单臂路由子接口 三 链路类型 四 单臂路由的配置实例 4 1拓扑图 4 2交换机的配置 4 3路由器的配置 4 4主机的配置 4 5连通性测试 五 总结 一 前提引
  • ajax+异步promise+async+await

    ajax是什么 为什么要学 ajax 异步js xml ajax实现客户端和服务端进行异步通信 实现页面的局部更新 好处 局部刷新 用户体验好 异步通信 加快了响应能力 减少冗余请求 减轻了服务器负担 ajax原理就是 通过xml对象向服务
  • 用python绘制一条直线_python绘制直线的方法

    本文实例为大家分享了python绘制直线的具体代码 供大家参考 具体内容如下 usr bin env python import vtk 绘制通用方法 def myshow linepolydata Now we ll look at it
  • 1km分辨率全球夜间灯光数据(2012-2022)

    数据简介 夜间灯光 一方面直接反映着当地的工业化水平和城市化水平 另一方面 也能部分反映着人口集中分布情况 同时 根据地表夜间灯光亮度 从而在一定程度上表征人类活动强度 长时间序列的夜间灯光数据被广泛运用于多个领域 一些学者将这一指标当作真
  • el-cascader级联选择器单选/多选根据接口懒加载动态获取数据

    在Vue项目中 使用elment ui 中 el cascader 级联选择器 级联选择器每一级的内容对应不同的接口 因此我们要采用懒加载的形式实现对数据的动态获取 主要思路 通过 lazy 开启动态懒加载 并使用 lazyLoad 来设置
  • Spri-n-g-Cl-oud-发-布

    https www cnblogs com lexiaofei tag SpringCloud
  • 数据库number 对应java_数据库中的number型表示什么

    本文收集整理关于数据库中的number型表示什么的相关议题 使用内容导航快速到达 内容导航 Q1 数据库中的number类型在java类中应该是什么类型 数据库中的number类型在java类对应的类型 1 如果number类没有设置小数位
  • GSM模块_STM32实现GPRS与服务器数据传输经验总结

    硬件环境 MCU STM32F103RET6 调试器 J Link GSM模块 Ai Thinker A6 安信可 还需要配一个串口打印工具 当初选这个模块纯粹是因为价格是最便宜的 软件环境 Keil4 开篇废话 经过两周时间的编码 调试
  • 字符串全排列 java实现

    项目github地址 bitcarmanlee easy algorithm interview and practice 欢迎大家star 留言 一起学习进步 经常会遇到字符串全排列的问题 例如 输入为 a b c 则其全排列组合为abc