本帖最后由 壹贰叁 于 2014-12-11 21:46 编辑
- package com.itheima;
- import java.awt.List;
- import java.util.ArrayList;
- /**
- * 第七题 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符
- 例如:
- 原始字符串是"abc",打印得到下列所有组合情况
- "a" "b" "c"
- "ab" "bc" "ca" "ba" "cb" "ac"
- "abc" "acb" "bac" "bca" "cab" "cba"
- */
- public class Test12 {
- public static void main(String[] args){
- print("abd");
- }
-
- //接收一个字符串输出,全部字符串组合情况
- public static void print(String str){
- char[] ch = str.toCharArray();
- ArrayList<String> list1 = new ArrayList<String>();
- for(int i = 1; i <= ch.length; i++){
- list1 = getList(list1, i,ch);
- for(String s:list1){
- System.out.print("\"" + s + "\" ");
- }
- System.out.println("");
- }
- }
-
- //接收前一行的list集合,与下一行的长度,和字符串基本组合字符数组后,返回下一行list集合
- public static ArrayList<String> getList(ArrayList<String> list,int len,char[] ch){
- ArrayList<String> newList = new ArrayList<String>();
- if(list.size() == 0){
- for(int i = 0; i < ch.length; i++){
- newList.add(ch[i]+"");
- }
- return newList;
- }
- for(String s:list){
- String str = s;
- for(int j = str.length();j < len ;j++){
- for(int i = 0; i < ch.length; i++){
- if(str.indexOf(ch[i]) == -1){
- newList.add(str + ch[i]);
- }
-
- }
- }
- }
- return newList.size() == 0 ? list:newList;
- }
- }
复制代码
|