求一个字符串所有可能的组合

题目:
求一个字符串按照位数m能够产生的组合,如“abc”可产生:ab,ac,bc
变种一:
求一个字符串可以产生的所有组合,如“abc”可产生:a,b,c,ab,ac,bc

@Test
public void test1() {
    String str = "abcde";
    System.out.println(choose(str, 3));}

/**
 * @param target 要截取的字符串
 * @param m      要截取位数
 * @return       结果集
 */
public static List<String> choose(String target, int m) {
    List<String> resultList = new LinkedList<String>();
    doChoose(resultList, target, "", m, 0);
    return resultList;
}

/**
 * @param resultList 结果集
 * @param target     原字符串
 * @param resultStr  结果集中的单个元素,默认为空
 * @param m          要截取位数
 * @param head       取字符串的第几位数
 */
private static void doChoose(List<String> resultList, String target, String resultStr, int m, int head) {
    // 递归头
    if (resultStr.length() == m) {
        resultList.add(resultStr);
        return;
    }
    // 递归体
    for (int i = head; i < target.length(); i++) {
        doChoose(resultList, target, resultStr + target.charAt(i), m, i + 1);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,452评论 0 4
  • 首先我们区分一下排列和组合: 输入一个字符串,得到这个字符串的所有组合(不是排列):比如输入abc,得到a,ab,...
    AwesomeAshe阅读 5,748评论 0 2
  • 宇小时候领他第一次去图书馆,是在他不到三岁的时候,当时的图书馆还在市府广场旁边。我找来一些儿童读物放在他面前,他坐...
    雨漫漫阅读 3,414评论 0 2
  • 我想尽我最大的努力,把生活过得像书里一样。
    bothybothy阅读 936评论 0 0
  • 樱花打着盹儿 暖风吹着口哨 梦里寻花的人 ...
    白运参阅读 1,800评论 0 0