Java练习题-输入一个字符串,输出该字符串中字符的所有组合(二)
2017-03-30 14:11
726 查看
import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 输入一个字符串,输出该字符串中字符的所有组合,组合中不能出现重复的字符和颠倒的组合。 * 如: * abc ==> a、b、c、ab、ac、bc、abc * abcd ==> a、b、c、d、 ab、ac、ad、bc、bd、cd、 abc、abd、acd、bcd、 abcd * * @author tang * */ public class Test { public static void main(String[] args) { List<String> combinations = getCombinations("abcde"); System.out.println(combinations); } private static List<String> getCombinations(String str) { List<String> resultList = new ArrayList<>(); char[] charArray = str.toCharArray(); String[] source=new String[charArray.length]; for (int i = 0; i < source.length; i++) { source[i]=""+charArray[i]; resultList.add(""+charArray[i]); } List<String> preResult=Arrays.asList(source); for (int len = 0; len < source.length; len++) { Map<String,List<String>> map=new HashMap<>(); for (int j = 0; j < preResult.size(); j++) { String k=preResult.get(j).charAt(0)+""; if (!map.containsKey(k)) { map.put(k, new ArrayList<String>()); } map.get(k).add(preResult.get(j)); } preResult=new ArrayList<>(); for (int i = 0; i < source.length; i++) { List<String> list = new ArrayList<>(); for (int j = i+1; j < source.length; j++) { List<String> list2 = map.get(source[j]); if (list2!=null) { list.addAll(map.get(source[j])); } } for (int j = 0; j < list.size(); j++) { resultList.add("" +source[i] + list.get(j)); preResult.add("" +source[i] + list.get(j)); } } } return resultList; } }
相关文章推荐
- Java练习题-输入一个字符串,输出该字符串中字符的所有组合
- 输入一个字符串,输出该字符串中字符的所有组合。(腾讯2014笔试附加题)
- 输入一个字符串,输出该字符串中字符的所有组合
- 输入一个字符串,输出该字符串中字符的所有组合 C#【总结】
- Java 组合的实现- 输入一个字符,输出字符中字母组成的所有组合
- 题目:输入一个字符串,输出该字符串中字符的所有组合
- 输入一个字符串,输出该字符串中字符的所有组合
- 【编程题】输入一个字符串,输出该字符串中相邻字符的所有组合。
- 题目:输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。
- 输入一个字符串,输出该字符串中字符的所有组合
- Swift - 排列组合之全排列 (输入一个字符串,输出该字符串包含的字符的所有组合)
- 输入一个字符串,输出该字符串中字符的所有组合
- 输入一个字符串,要求输出字符串中字符所有的排列,例如输入"abc",得到"abc","acb","bca","bac","cab","cba"
- java 输入一个字符串,打印出该字符串中字符的所有排列
- Java:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
- java 输入一个字符串,打印出该字符串中字符的所有排列
- java 输入一个字符串,打印出该字符串中字符的所有排列
- C语言 字符串 编一个程序,输入一个字符串,将组成字符串的所有非英文字母的字符删除后输出。
- java输入一个字符串,打印出该字符串中字符的所有排列,随机打乱排序
- 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。