java输出字符串的所有排列
2014-06-10 10:01
513 查看
昨天开始看《数据结构与算法分析_java语言描述》这本书,第一章的习题1.6 让我想了老半天,网上查了下发现解决方法蛮多的,用的都是递归,不禁感慨算法真是太神奇了- -
so 在这里记录一下我找到的几个解决方法。
第一种:
第二种:
第三种:
so 在这里记录一下我找到的几个解决方法。
第一种:
public static List<String> pailie(String str){ List<String> result = new ArrayList<String>(); if(str.length()==1) result.add(str); else { char thisChar = str.charAt(0); List<String> temp = pailie(str.substring(1)); for(int i =0;i<temp.size();i++){ String thisStr = temp.get(i); for(int j=0 ; j<= thisStr.length() ; j++){ String firstStr = thisStr.substring(0, j); String lastStr = thisStr.substring(j); result.add(firstStr + thisChar + lastStr); } } } return result; } public static void main(String[] args) { List<String> newList = pailie("abcd"); for(String temp : newList){ System.out.println(temp); } System.out.println("-----------------------------------"); System.out.println(newList.size()); }
第二种:
public static void main(String[] args) { String str = "abc"; permutation(str.toCharArray(), 0); } public static void permutation(char[] str, int i) { if (i >= str.length) return; if (i == str.length - 1) { System.out.println(String.valueOf(str)); } else { for (int j = i; j < str.length; j++) { char temp = str[j]; str[j] = str[i]; str[i] = temp; permutation(str, i + 1); temp = str[j]; str[j] = str[i]; str[i] = temp; } } }
第三种:
public static int c = 0; public static void main(String[] args) { String s = "abcd"; printAllArray(s, ""); } private static void printAllArray(String s, String n) { if (s.length() == 0) { System.out.println(n + " --- " + ++c); } else { for (int i = 0; i < s.length(); ++i) { printAllArray(s.substring(1), n + s.charAt(0)); s = s.substring(1) + s.charAt(0); } } }
相关文章推荐
- JAVA 输出指定字符串所有排列组合
- 递归的应用,输出字符串的所有排列(java)
- 用户输入字符串,输出所有排列 java
- 数据结构——算法之(036)(输出字符串的所有排列)
- 给定一个字符串,输出所有的排列组合方式
- 输出字符串的所有排列
- 给出一个函数来输出一个字符串的所有排列
- 输出一个字符串所有排列。注意有重复字符
- 输出字符串所有排列
- 通过自定义元注释将java对象的所有属性以字符串“字段中文:值”输出
- java输出一个数组的所有排列形式(全排序)
- 给定一个字符串,输出其所有的可能排列
- 给出一个函数来输出一个字符串的所有排列。
- 【递归】输出一个字符串的所有排列
- java输入一个字符串,打印出该字符串中字符的所有排列,随机打乱排序
- 写一个函数输出一个字符串中的所有排列
- 给出一个函数来输出一个字符串的所有排列
- IT公司机试常考的一道题--将任意字符串逆序输出或者输出所有排列
- 给出一个函数来输出一个字符串的所有排列
- 微软等数据结构+算法面试100题(2)--给出一个函数来输出一个字符串的所有排列