求字符串全排列的递归算法(java程序)
2010-12-15 14:58
260 查看
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)); } } }
相关文章推荐
- 06.JAVA小程序—字符串大小写转换
- 2.Java程序优化-字符串优化处理之StringBuffer和StringBuilder
- Oracle非集群和集群中Java程序连接字符串
- 要求根据RandomStr.java:使用类型转换生成六位验证字符串,示例程序每次运 行时,都会生成不同的字符串。
- Java下实现无重字符串的全排列(递归和回溯方法)
- java控制台程序如何判断String字符串中只输入了一个回车
- [笔记]改善Java程序的151个建议---第四章 字符串
- 编写程序,测试字符串“你好,欢迎来到Java世界”的长度,将字符串的长度转换成字符串进行输出,并对其中的“Java”四个字母进行截取,输出截取字母以及它在字符串中的位置。
- 编写高质量代码:改善Java程序的151个建议(第4章:字符串___建议52~55)
- 字符串全排列——递归算法
- Java I/O之数据流字符串流 Java I/O之数据流字符串&&字节数组流 DataInputStream :数据输入流允许程序以与机器无关方式从底层&&字节数组流
- java程序的递归算法,列出某个目录下的所有子目录和文件
- java程序中字符串的提取,查询及拆分
- java程序的递归算法,列出某个目录下的所有子目录和文件
- Java 程序优化:字符串操作、基本运算方法等优化策略
- 【Java笔试题】输出字符串的全排列
- java控制台程序如何判断String字符串中只输入了一个回车
- 用BSF + Beanshell使Java程序能够运行字符串形式的代码(转载)
- 用java编写一个简单的字符串加密解密程序,将字符串分成若干行,实现字符串以一列一列读取,并还原之前输入的字符串。这里实现4行输出。
- 通过打印字符串重新启动Java程序