求字符串全排列的递归算法(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)); } } }

相关文章
|
17天前
|
Java
Java 字符串分割split空字符串丢失解决方案
Java 字符串分割split空字符串丢失解决方案
|
14天前
|
Java Maven
【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“
【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“
35 3
|
19小时前
|
Java 索引
【java基础】字符串String的基本处理集锦
【java基础】字符串String的基本处理集锦
11 0
|
1天前
|
设计模式 算法 Java
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
|
2天前
|
Java
网页运行java程序cheerpj
网页运行java程序cheerpj
26 0
|
16天前
|
算法
【算法学习--字符串】(不含KMP算法)
【算法学习--字符串】(不含KMP算法)
|
17天前
|
算法 安全 Java
java代码 实现AES_CMAC 算法测试
该代码实现了一个AES-CMAC算法的简单测试,使用Bouncy Castle作为安全提供者。静态变量K定义了固定密钥。`Aes_Cmac`函数接受密钥和消息,返回AES-CMAC生成的MAC值。在`main`方法中,程序对给定的消息进行AES-CMAC加密,然后模拟接收ECU的加密结果并进行比较。如果两者匹配,输出&quot;验证成功&quot;,否则输出&quot;验证失败&quot;。辅助方法包括将字节转为16进制字符串和将16进制字符串转为字节。
|
18天前
|
Java
Java练习题-键盘录入字符串实现大小写转换
Java练习题-键盘录入字符串实现大小写转换
20 2
|
20天前
|
存储 安全 Java
Java中实现高效的字符串拼接技术
【4月更文挑战第6天】在Java编程中,字符串拼接是一个常见的操作。然而,由于字符串的不可变性,频繁的拼接操作可能会导致性能问题。本文将探讨Java中实现高效字符串拼接的技术,包括使用StringBuilder类、StringBuffer类以及Java 8中的StringJoiner类。通过对比这些技术的优缺点,我们将为您提供在不同场景下选择合适的字符串拼接方法的建议。
|
26天前
|
存储 算法 JavaScript
Java入门高频考查算法逻辑基础知识3-编程篇(超详细18题1.8万字参考编程实现)
解决这类问题时,建议采取下面的步骤: 理解数学原理:确保你懂得基本的数学公式和法则,这对于制定解决方案至关重要。 优化算法:了解时间复杂度和空间复杂度,并寻找优化的机会。特别注意避免不必要的重复计算。 代码实践:多编写实践代码,并确保你的代码是高效、清晰且稳健的。 错误检查和测试:要为你的代码编写测试案例,测试标准的、边缘情况以及异常输入。 进行复杂问题简化:面对复杂的问题时,先尝试简化问题,然后逐步分析和解决。 沟通和解释:在编写代码的时候清晰地沟通你的思路,不仅要写出正确的代码,还要能向面试官解释你的
33 0