求字符串全排列的递归算法(java程序)

简介: <p><textarea cols="50" rows="15" name="code" class="java">import java.util.ArrayList; import java.util.List; /** * 求字符串的全排列 * * @author wenin819 * */ public class Arrange { /** *

import java.util.ArrayList; import java.util.List; /** * 求字符串的全排列 * * @author wenin819 * */ public class Arrange { /** * 判断调用求排列的主要方法 */ public static List<String> arrange(String input){ if(null == input || 0 == input.length()){ System.out.println("输入为空!结果也为空!"); return null; } List<String> rsList= new ArrayList<String>(); arrangeItem(new StringBuffer(input), input.length() - 1, rsList); return rsList; } /** * 求排列的主要方法 */ public static void arrangeItem(StringBuffer input, int end, List<String> rsList) { if (0 == end) { rsList.add(new String(input)); return; } for (int i = 0; i <= end; i++) { swap(input, i, end); arrangeItem(input, end - 1, rsList); swap(input, i, end); } } /** * 置换StringBuffer字符串中i和j位置上的字符 */ private static void swap(StringBuffer word, int i, int j) { if (i == j) return; char temp; temp = word.charAt(i); word.setCharAt(i, word.charAt(j)); word.setCharAt(j, temp); } /** * 测试 */ public static void main(String args[]) { String input = new String("abcd"); if(args.length > 0) input = args[0]; List<String> rsList = arrange(input); System.out.println(input+"的排列总数为:" + rsList.size() + "/n排列分别为:"); for (int i = 0; i < rsList.size(); i++) { System.out.println(rsList.get(i)); } } }

相关文章
|
3月前
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
101 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
2月前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
146 83
|
2月前
|
存储 安全 Java
Java零基础-字符串详解
【10月更文挑战第18天】Java零基础教学篇,手把手实践教学!
113 60
|
2月前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
60 26
|
2月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
65 8
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
65 1
|
2月前
|
存储 缓存 算法
通过优化算法和代码结构来提升易语言程序的执行效率
通过优化算法和代码结构来提升易语言程序的执行效率
|
2月前
|
IDE Java 编译器
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
85 1
|
2月前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
54 6
|
2月前
|
SQL 安全 Java
Java 异常处理:筑牢程序稳定性的 “安全网”
本文深入探讨Java异常处理,涵盖异常的基础分类、处理机制及最佳实践。从`Error`与`Exception`的区分,到`try-catch-finally`和`throws`的运用,再到自定义异常的设计,全面解析如何有效管理程序中的异常情况,提升代码的健壮性和可维护性。通过实例代码,帮助开发者掌握异常处理技巧,确保程序稳定运行。
47 0

热门文章

最新文章