【Java笔试题】输出字符串的所有组合

1、题目

输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。

2、解题思想

首先创建combine函数,对于字符串进行处理,如果字符串为空,则直接输出;如果字符串不为空,则创建StingBuilder对象,对字符串内的每个元素进行循环处理,调用combination函数。对于combination函数,其功能就是将字符串中字符的所有组合输出。

3、Java代码

public class CombinationAll {
    public static void main(String[] args) {
        combine("abc");
    }

    public static void combine(String str) {
        if (str == null)  //如果字符串为空,则直接返回
            return;
        int length = str.length();
        StringBuilder sb = new StringBuilder();  //创建字符串容器
        for (int i = 0; i < length; i++) {
            combination(str, 0, i, sb);
        }
    }

    public static void combination(String str, int index, int number, StringBuilder sb) {
        if (number == -1) {
            System.out.println(sb.toString());
            return;
        }
        if (index == str.length())
            return;
        sb.append(str.charAt(index));  //向StringBuilder中添加元素
        combination(str, index + 1, number - 1, sb);
        sb.deleteCharAt(sb.length() - 1);  //在StringBuilder中删除元素
        combination(str, index + 1, number, sb);
    }
}

你可能感兴趣的:(Java笔试题)